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;
187 auto processKeyPair = [&] {
189 if ((data - from) == 0) {
191 ret.insertMulti(key, {});
198 }
else if ((data - from) > 0) {
205 for (
int i = 0; i < len; ++i, ++outlen) {
206 const char c = inputPtr[i];
207 if (c ==
'%' && i + 2 < len) {
208 int a = inputPtr[++i];
209 int b = inputPtr[++i];
211 if (a >=
'0' && a <=
'9')
213 else if (a >=
'a' && a <=
'f')
215 else if (a >=
'A' && a <=
'F')
218 if (b >=
'0' && b <=
'9')
220 else if (b >=
'a' && b <=
'f')
222 else if (b >=
'A' && b <=
'F')
225 *data++ = (char) ((a << 4) | b);
227 }
else if (c ==
'+') {
229 }
else if (c ==
'=') {
231 :
QString::fromUtf8(from, data - from);
235 }
else if (c ==
'&') {
257 char *data = ba->
data();
258 const char *inputPtr = data;
260 int len = ba->
count();
261 bool skipUtf8 =
true;
263 for (
int i = 0; i < len; ++i, ++outlen) {
264 const char c = inputPtr[i];
265 if (c ==
'%' && i + 2 < len) {
266 int a = inputPtr[++i];
267 int b = inputPtr[++i];
269 if (a >=
'0' && a <=
'9')
271 else if (a >=
'a' && a <=
'f')
273 else if (a >=
'A' && a <=
'F')
276 if (b >=
'0' && b <=
'9')
278 else if (b >=
'a' && b <=
'f')
280 else if (b >=
'A' && b <=
'F')
283 *data++ = (char) ((a << 4) | b);
285 }
else if (c ==
'+') {
The Cutelyst namespace holds all public Cutelyst API.
QMultiMap< QString, QString > ParamsMultiMap
int count(char ch) const const
QByteArray & fill(char ch, int size)
bool isEmpty() const const
bool isEmpty() const const
QString fromLatin1(const char *str, int size)
QString fromUtf8(const char *str, int size)
bool isEmpty() const const
QByteArray toLatin1() const const
void push_back(const T &value)