15 #if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)) 20 for (
int i = 0; i < columnsSize.
size(); ++i) {
39 for (
const QString &header : headers) {
44 if (columnsSize.
empty()) {
45 for (
const QString &row : rows) {
48 }
else if (rows.size() != columnsSize.
size()) {
49 qFatal(
"Incomplete table");
55 if (row.size() > columnsSize.
size()) {
56 qFatal(
"Incomplete table");
60 for (
int i = 0; i < row.size(); ++i) {
61 columnsSize[i] = qMax(columnsSize[i], row[i].size());
66 #if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)) 72 out.setFieldAlignment(QTextStream::AlignLeft);
73 QByteArray div = buildTableDivision(columnsSize);
82 if (!headers.isEmpty()) {
84 for (
int i = 0; i < headers.size(); ++i) {
87 out.setFieldWidth(columnsSize[i]);
101 for (
int i = 0; i < row.size(); ++i) {
104 out.setFieldWidth(columnsSize[i]);
107 out.setFieldWidth(0);
127 char *data = ba.
data();
128 const char *inputPtr = data;
130 const int len = ba.
count();
131 bool skipUtf8 =
true;
133 for (
int i = 0 ; i < len; ++i, ++outlen) {
134 const char c = inputPtr[i];
135 if (c ==
'%' && i + 2 < len) {
136 int a = inputPtr[++i];
137 int b = inputPtr[++i];
139 if (a >=
'0' && a <=
'9') a -=
'0';
140 else if (a >=
'a' && a <=
'f') a = a -
'a' + 10;
141 else if (a >=
'A' && a <=
'F') a = a -
'A' + 10;
143 if (b >=
'0' && b <=
'9') b -=
'0';
144 else if (b >=
'a' && b <=
'f') b = b -
'a' + 10;
145 else if (b >=
'A' && b <=
'F') b = b -
'A' + 10;
147 *data++ = (char)((a << 4) | b);
149 }
else if (c ==
'+') {
172 const char *inputPtr = data;
175 bool skipUtf8 =
true;
179 auto processKeyPair = [&] {
181 if ((data - from) == 0) {
188 }
else if ((data - from) > 0) {
193 for (
int i = 0; i < len; ++i, ++outlen) {
194 const char c = inputPtr[i];
195 if (c ==
'%' && i + 2 < len) {
196 int a = inputPtr[++i];
197 int b = inputPtr[++i];
199 if (a >=
'0' && a <=
'9') a -=
'0';
200 else if (a >=
'a' && a <=
'f') a = a -
'a' + 10;
201 else if (a >=
'A' && a <=
'F') a = a -
'A' + 10;
203 if (b >=
'0' && b <=
'9') b -=
'0';
204 else if (b >=
'a' && b <=
'f') b = b -
'a' + 10;
205 else if (b >=
'A' && b <=
'F') b = b -
'A' + 10;
207 *data++ = (char)((a << 4) | b);
209 }
else if (c ==
'+') {
211 }
else if (c ==
'=') {
216 }
else if (c ==
'&') {
238 char *data = ba->
data();
239 const char *inputPtr = data;
241 int len = ba->
count();
242 bool skipUtf8 =
true;
244 for (
int i = 0; i < len; ++i, ++outlen) {
245 const char c = inputPtr[i];
246 if (c ==
'%' && i + 2 < len) {
247 int a = inputPtr[++i];
248 int b = inputPtr[++i];
250 if (a >=
'0' && a <=
'9') a -=
'0';
251 else if (a >=
'a' && a <=
'f') a = a -
'a' + 10;
252 else if (a >=
'A' && a <=
'F') a = a -
'A' + 10;
254 if (b >=
'0' && b <=
'9') b -=
'0';
255 else if (b >=
'a' && b <=
'f') b = b -
'a' + 10;
256 else if (b >=
'A' && b <=
'F') b = b -
'A' + 10;
258 *data++ = (char)((a << 4) | b);
260 }
else if (c ==
'+') {
QByteArray & fill(char ch, int size)
bool isEmpty() const const
QMap::iterator insertMulti(const Key &key, const T &value)
QString fromUtf8(const char *str, int size)
bool isEmpty() const const
bool isEmpty() const const
int count(char ch) const const
The Cutelyst namespace holds all public Cutelyst API.
QByteArray toLatin1() const const
void push_back(const T &value)
QString fromLatin1(const char *str, int size)