15#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
20 for (
int i = 0; i < columnsSize.
size(); ++i) {
41 for (
const QString &header : headers) {
46 if (columnsSize.
empty()) {
47 for (
const QString &row : rows) {
50 }
else if (rows.size() != columnsSize.
size()) {
51 qFatal(
"Incomplete table");
57 if (row.size() > columnsSize.
size()) {
58 qFatal(
"Incomplete table");
62 for (
int i = 0; i < row.size(); ++i) {
63 columnsSize[i] = qMax(columnsSize[i], row[i].size());
68#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
75 QByteArray div = buildTableDivision(columnsSize);
84 if (!headers.isEmpty()) {
86 for (
int i = 0; i < headers.size(); ++i) {
89 out.setFieldWidth(columnsSize[i]);
103 for (
int i = 0; i < row.size(); ++i) {
106 out.setFieldWidth(columnsSize[i]);
109 out.setFieldWidth(0);
129 char *data = ba.
data();
130 const char *inputPtr = data;
132 const int len = ba.
count();
133 bool skipUtf8 =
true;
135 for (
int i = 0; i < len; ++i, ++outlen) {
136 const char c = inputPtr[i];
137 if (c ==
'%' && i + 2 < len) {
138 int a = inputPtr[++i];
139 int b = inputPtr[++i];
141 if (a >=
'0' && a <=
'9')
143 else if (a >=
'a' && a <=
'f')
145 else if (a >=
'A' && a <=
'F')
148 if (b >=
'0' && b <=
'9')
150 else if (b >=
'a' && b <=
'f')
152 else if (b >=
'A' && b <=
'F')
155 *data++ = (char) ((a << 4) | b);
157 }
else if (c ==
'+') {
180 const char *inputPtr = data;
183 bool skipUtf8 =
true;
186 auto processKeyPair = [&] {
188 if ((data - from) == 0) {
197 }
else if ((data - from) > 0) {
204 for (
int i = 0; i < len; ++i) {
205 const char c = inputPtr[i];
206 if (c ==
'%' && i + 2 < len) {
207 int a = inputPtr[++i];
208 int b = inputPtr[++i];
210 if (a >=
'0' && a <=
'9')
212 else if (a >=
'a' && a <=
'f')
214 else if (a >=
'A' && a <=
'F')
217 if (b >=
'0' && b <=
'9')
219 else if (b >=
'a' && b <=
'f')
221 else if (b >=
'A' && b <=
'F')
224 *data++ = (char) ((a << 4) | b);
226 }
else if (c ==
'+') {
228 }
else if (c ==
'=') {
230 :
QString::fromUtf8(from, data - from);
234 }
else if (c ==
'&') {
256 char *data = ba->
data();
257 const char *inputPtr = data;
259 int len = ba->
count();
260 bool skipUtf8 =
true;
262 for (
int i = 0; i < len; ++i, ++outlen) {
263 const char c = inputPtr[i];
264 if (c ==
'%' && i + 2 < len) {
265 int a = inputPtr[++i];
266 int b = inputPtr[++i];
268 if (a >=
'0' && a <=
'9')
270 else if (a >=
'a' && a <=
'f')
272 else if (a >=
'A' && a <=
'F')
275 if (b >=
'0' && b <=
'9')
277 else if (b >=
'a' && b <=
'f')
279 else if (b >=
'A' && b <=
'F')
282 *data++ = (char) ((a << 4) | b);
284 }
else if (c ==
'+') {
The Cutelyst namespace holds all public Cutelyst API.
QMultiMap< QString, QString > ParamsMultiMap
qsizetype count() const const
QByteArray & fill(char ch, qsizetype size)
bool isEmpty() const const
bool isEmpty() const const
void push_back(QList< T >::parameter_type value)
qsizetype size() const const
QMultiMap< Key, T >::iterator insertMulti(QMultiMap< Key, T >::const_iterator pos, const Key &key, const T &value)
QString fromLatin1(QByteArrayView str)
QString fromUtf8(QByteArrayView str)
bool isEmpty() const const
QByteArray toLatin1() const const