Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qlocale_p.h
Go to the documentation of this file.
1// Copyright (C) 2021 The Qt Company Ltd.
2// Copyright (C) 2016 Intel Corporation.
3// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
4
5#ifndef QLOCALE_P_H
6#define QLOCALE_P_H
7
8//
9// W A R N I N G
10// -------------
11//
12// This file is not part of the Qt API. It exists for the convenience
13// of internal files. This header file may change from version to version
14// without notice, or even be removed.
15//
16// We mean it.
17//
18
19#include "qlocale.h"
20
21#include <QtCore/qcalendar.h>
22#include <QtCore/qlist.h>
23#include <QtCore/qnumeric.h>
24#include <QtCore/private/qnumeric_p.h>
25#include <QtCore/qstring.h>
26#include <QtCore/qvariant.h>
27#include <QtCore/qvarlengtharray.h>
28#ifdef Q_OS_WASM
29#include <private/qstdweb_p.h>
30#endif
31
32#include <limits>
33#include <cmath>
34#include <string_view>
35
37
38template <typename T> struct QSimpleParsedNumber
39{
41 // When used < 0, -used is how much was used, but it was an error.
43 bool ok() const { return used > 0; }
44};
45
46template <typename MaskType, uchar Lowest> struct QCharacterSetMatch
47{
48 static constexpr int MaxRange = std::numeric_limits<MaskType>::digits;
49 MaskType mask;
50
51 constexpr QCharacterSetMatch(std::string_view set)
52 : mask(0)
53 {
54 for (char c : set) {
55 int idx = uchar(c) - Lowest;
56 mask |= MaskType(1) << idx;
57 }
58 }
59
60 constexpr bool matches(uchar c) const
61 {
62 unsigned idx = c - Lowest;
63 if (idx >= MaxRange)
64 return false;
65 return (mask >> idx) & 1;
66 }
67};
68
69namespace QtPrivate {
70inline constexpr char ascii_space_chars[] =
71 "\t" // 9: HT - horizontal tab
72 "\n" // 10: LF - line feed
73 "\v" // 11: VT - vertical tab
74 "\f" // 12: FF - form feed
75 "\r" // 13: CR - carriage return
76 " "; // 32: space
77
78template <const char *Set, int ForcedLowest = -1>
79inline constexpr auto makeCharacterSetMatch()
80{
81 constexpr auto view = std::string_view(Set);
82 constexpr uchar MinElement = *std::min_element(view.begin(), view.end());
83 constexpr uchar MaxElement = *std::max_element(view.begin(), view.end());
84 constexpr int Range = MaxElement - MinElement;
85 static_assert(Range < 64, "Characters in the set are 64 or more values apart");
86
87 if constexpr (ForcedLowest >= 0) {
88 // use the force
89 static_assert(ForcedLowest <= int(MinElement), "The force is not with you");
90 using MaskType = std::conditional_t<MaxElement - ForcedLowest < 32, quint32, quint64>;
91 return QCharacterSetMatch<MaskType, ForcedLowest>(view);
92 } else if constexpr (MaxElement < std::numeric_limits<qregisteruint>::digits) {
93 // if we can use a Lowest of zero, we can remove a subtraction
94 // from the matches() code at runtime
95 using MaskType = std::conditional_t<(MaxElement < 32), quint32, qregisteruint>;
96 return QCharacterSetMatch<MaskType, 0>(view);
97 } else {
98 using MaskType = std::conditional_t<(Range < 32), quint32, quint64>;
99 return QCharacterSetMatch<MaskType, MinElement>(view);
100 }
101}
102} // QtPrivate
103
104struct QLocaleData;
105// Subclassed by Android platform plugin:
106class Q_CORE_EXPORT QSystemLocale
107{
108 Q_DISABLE_COPY_MOVE(QSystemLocale)
109 QSystemLocale *next = nullptr; // Maintains a stack.
110
111public:
113 virtual ~QSystemLocale();
114
123
125 LanguageId, // uint
126 TerritoryId, // uint
127 DecimalPoint, // QString
128 GroupSeparator, // QString (empty QString means: don't group digits)
129 ZeroDigit, // QString
130 NegativeSign, // QString
131 DateFormatLong, // QString
132 DateFormatShort, // QString
133 TimeFormatLong, // QString
134 TimeFormatShort, // QString
135 DayNameLong, // QString, in: int
136 DayNameShort, // QString, in: int
137 DayNameNarrow, // QString, in: int
138 MonthNameLong, // QString, in: int
139 MonthNameShort, // QString, in: int
140 MonthNameNarrow, // QString, in: int
141 DateToStringLong, // QString, in: QDate
142 DateToStringShort, // QString in: QDate
143 TimeToStringLong, // QString in: QTime
144 TimeToStringShort, // QString in: QTime
147 DateTimeToStringLong, // QString in: QDateTime
148 DateTimeToStringShort, // QString in: QDateTime
150 PositiveSign, // QString
151 AMText, // QString
152 PMText, // QString
153 FirstDayOfWeek, // Qt::DayOfWeek
154 Weekdays, // QList<Qt::DayOfWeek>
155 CurrencySymbol, // QString in: CurrencyToStringArgument
156 CurrencyToString, // QString in: qlonglong, qulonglong or double
157 Collation, // QString
158 UILanguages, // QStringList
159 StringToStandardQuotation, // QString in: QStringView to quote
160 StringToAlternateQuotation, // QString in: QStringView to quote
161 ScriptId, // uint
163 LocaleChanged, // system locale changed
166 StandaloneMonthNameLong, // QString, in: int
167 StandaloneMonthNameShort, // QString, in: int
168 StandaloneMonthNameNarrow, // QString, in: int
169 StandaloneDayNameLong, // QString, in: int
170 StandaloneDayNameShort, // QString, in: int
171 StandaloneDayNameNarrow // QString, in: int
172 };
173 virtual QVariant query(QueryType type, QVariant &&in = QVariant()) const;
174
175 virtual QLocale fallbackLocale() const;
176 inline qsizetype fallbackLocaleIndex() const;
177};
180
181#if QT_CONFIG(icu)
182namespace QIcu {
183 QString toUpper(const QByteArray &localeId, const QString &str, bool *ok);
184 QString toLower(const QByteArray &localeId, const QString &str, bool *ok);
185}
186#endif
187
188
190{
192 [[nodiscard]] inline bool operator==(QLocaleId other) const
193 { return language_id == other.language_id && script_id == other.script_id && territory_id == other.territory_id; }
194 [[nodiscard]] inline bool operator!=(QLocaleId other) const
195 { return !operator==(other); }
196 [[nodiscard]] inline bool isValid() const
197 {
200 }
201 [[nodiscard]] inline bool matchesAll() const
202 {
203 return !language_id && !script_id && !territory_id;
204 }
205 // Use as: filter.accept...(candidate)
206 [[nodiscard]] inline bool acceptLanguage(quint16 lang) const
207 {
208 // Always reject AnyLanguage (only used for last entry in locale_data array).
209 // So, when searching for AnyLanguage, accept everything *but* AnyLanguage.
210 return language_id ? lang == language_id : lang;
211 }
212 [[nodiscard]] inline bool acceptScriptTerritory(QLocaleId other) const
213 {
214 return (!territory_id || other.territory_id == territory_id)
215 && (!script_id || other.script_id == script_id);
216 }
217
218 [[nodiscard]] QLocaleId withLikelySubtagsAdded() const;
219 [[nodiscard]] QLocaleId withLikelySubtagsRemoved() const;
220
221 [[nodiscard]] QByteArray name(char separator = '-') const;
222
224};
226
227
228using CharBuff = QVarLengthArray<char, 256>;
229
231{
232 enum State { // A duplicate of QValidator::State
236 };
237
240};
241
243{
244public:
245 // Having an index for each locale enables us to have diverse sources of
246 // data, e.g. calendar locales, as well as the main CLDR-derived data.
247 [[nodiscard]] static qsizetype findLocaleIndex(QLocaleId localeId);
248 [[nodiscard]] static const QLocaleData *c();
249
256
272
274
275private:
276 enum PrecisionMode {
277 PMDecimalDigits = 0x01,
278 PMSignificantDigits = 0x02,
279 PMChopTrailingZeros = 0x03
280 };
281
282 [[nodiscard]] QString decimalForm(QString &&digits, int decpt, int precision,
283 PrecisionMode pm, bool mustMarkDecimal,
284 bool groupDigits) const;
285 [[nodiscard]] QString exponentForm(QString &&digits, int decpt, int precision,
286 PrecisionMode pm, bool mustMarkDecimal,
287 int minExponentDigits) const;
288 [[nodiscard]] QString signPrefix(bool negative, unsigned flags) const;
289 [[nodiscard]] QString applyIntegerFormatting(QString &&numStr, bool negative, int precision,
290 int base, int width, unsigned flags) const;
291
292public:
293 [[nodiscard]] QString doubleToString(double d,
294 int precision = -1,
296 int width = -1,
297 unsigned flags = NoFlags) const;
298 [[nodiscard]] QString longLongToString(qint64 l, int precision = -1,
299 int base = 10,
300 int width = -1,
301 unsigned flags = NoFlags) const;
302 [[nodiscard]] QString unsLongLongToString(quint64 l, int precision = -1,
303 int base = 10,
304 int width = -1,
305 unsigned flags = NoFlags) const;
306
307 // this function is meant to be called with the result of stringToDouble or bytearrayToDouble
308 // so *ok must have been properly set (if not null)
309 [[nodiscard]] static float convertDoubleToFloat(double d, bool *ok)
310 {
311 float result;
312 bool b = convertDoubleTo<float>(d, &result);
313 if (ok && *ok)
314 *ok = b;
315 return result;
316 }
317
318 [[nodiscard]] double stringToDouble(QStringView str, bool *ok,
319 QLocale::NumberOptions options) const;
320 [[nodiscard]] QSimpleParsedNumber<qint64>
321 stringToLongLong(QStringView str, int base, QLocale::NumberOptions options) const;
322 [[nodiscard]] QSimpleParsedNumber<quint64>
323 stringToUnsLongLong(QStringView str, int base, QLocale::NumberOptions options) const;
324
325 // this function is used in QIntValidator (QtGui)
326 [[nodiscard]] Q_CORE_EXPORT
327 static QSimpleParsedNumber<qint64> bytearrayToLongLong(QByteArrayView num, int base);
328 [[nodiscard]] static QSimpleParsedNumber<quint64>
330
331 [[nodiscard]] bool numberToCLocale(QStringView s, QLocale::NumberOptions number_options,
333
335 {
336#ifndef QT_NO_SYSTEMLOCALE
337 // Only used for the system locale, to store data for the view to look at:
339#endif
341 char32_t zeroUcs = 0;
343 bool isC = false; // C locale sets this and nothing else.
344 bool exponentCyrillic = false; // True only for floating-point parsing of Cyrillic.
346 {
347 // No known locale has digits that are more than one Unicode
348 // code-point, so we can safely deal with digits as plain char32_t.
349 switch (zero.size()) {
350 case 1:
351 Q_ASSERT(!zero.at(0).isSurrogate());
352 zeroUcs = zero.at(0).unicode();
353 zeroLen = 1;
354 break;
355 case 2:
356 Q_ASSERT(zero.at(0).isHighSurrogate());
357 zeroUcs = QChar::surrogateToUcs4(zero.at(0), zero.at(1));
358 zeroLen = 2;
359 break;
360 default:
361 Q_ASSERT(zero.size() == 0); // i.e. we got no value to use
362 break;
363 }
364 }
365 [[nodiscard]] bool isValid(NumberMode mode) const // Asserted as a sanity check.
366 {
367 if (isC)
368 return true;
369 if (exponentCyrillic && exponent != u"E" && exponent != u"\u0415")
370 return false;
371 return (zeroLen == 1 || zeroLen == 2) && zeroUcs > 0
372 && (mode == IntegerMode || !decimal.isEmpty())
373 // group may be empty (user config in system locale)
374 && !minus.isEmpty() && !plus.isEmpty()
375 && (mode != DoubleScientificMode || !exponent.isEmpty());
376 }
377 };
378 [[nodiscard]] inline NumericData numericData(NumberMode mode) const;
379
380 // this function is used in QIntValidator (QtGui)
381 [[nodiscard]] Q_CORE_EXPORT ParsingResult
382 validateChars(QStringView str, NumberMode numMode, int decDigits = -1,
383 QLocale::NumberOptions number_options = QLocale::DefaultNumberOptions) const;
384
385 // Access to assorted data members:
386 [[nodiscard]] QLocaleId id() const
387 { return QLocaleId { m_language_id, m_script_id, m_territory_id }; }
388
389 [[nodiscard]] QString decimalPoint() const;
390 [[nodiscard]] QString groupSeparator() const;
391 [[nodiscard]] QString listSeparator() const;
392 [[nodiscard]] QString percentSign() const;
393 [[nodiscard]] QString zeroDigit() const;
394 [[nodiscard]] char32_t zeroUcs() const;
395 [[nodiscard]] QString positiveSign() const;
396 [[nodiscard]] QString negativeSign() const;
397 [[nodiscard]] QString exponentSeparator() const;
398
400 {
403 [[nodiscard]] QString getData(const char16_t *table) const
404 {
405 return size > 0
406 ? QString::fromRawData(reinterpret_cast<const QChar *>(table + offset), size)
407 : QString();
408 }
409 [[nodiscard]] QStringView viewData(const char16_t *table) const
410 {
411 return { reinterpret_cast<const QChar *>(table + offset), size };
412 }
413 [[nodiscard]] QString getListEntry(const char16_t *table, qsizetype index) const
414 {
415 return listEntry(table, index).getData(table);
416 }
417 [[nodiscard]] QStringView viewListEntry(const char16_t *table, qsizetype index) const
418 {
419 return listEntry(table, index).viewData(table);
420 }
421 [[nodiscard]] char32_t ucsFirst(const char16_t *table) const
422 {
423 if (size && !QChar::isSurrogate(table[offset]))
424 return table[offset];
425 if (size > 1 && QChar::isHighSurrogate(table[offset]))
426 return QChar::surrogateToUcs4(table[offset], table[offset + 1]);
427 return 0;
428 }
429 private:
430 [[nodiscard]] DataRange listEntry(const char16_t *table, qsizetype index) const
431 {
432 const char16_t separator = ';';
433 quint16 i = 0;
434 while (index > 0 && i < size) {
435 if (table[offset + i] == separator)
436 index--;
437 i++;
438 }
439 quint16 end = i;
440 while (end < size && table[offset + end] != separator)
441 end++;
442 return { quint16(offset + i), quint16(end - i) };
443 }
444 };
445
446#define ForEachQLocaleRange(X) \
447 X(startListPattern) X(midListPattern) X(endListPattern) X(pairListPattern) X(listDelimit) \
448 X(decimalSeparator) X(groupDelim) X(percent) X(zero) X(minus) X(plus) X(exponential) \
449 X(quoteStart) X(quoteEnd) X(quoteStartAlternate) X(quoteEndAlternate) \
450 X(longDateFormat) X(shortDateFormat) X(longTimeFormat) X(shortTimeFormat) \
451 X(longDayNamesStandalone) X(longDayNames) \
452 X(shortDayNamesStandalone) X(shortDayNames) \
453 X(narrowDayNamesStandalone) X(narrowDayNames) \
454 X(anteMeridiem) X(postMeridiem) \
455 X(byteCount) X(byteAmountSI) X(byteAmountIEC) \
456 X(currencySymbol) X(currencyDisplayName) \
457 X(currencyFormat) X(currencyFormatNegative) \
458 X(endonymLanguage) X(endonymTerritory)
459
460#define rangeGetter(name) \
461 [[nodiscard]] DataRange name() const { return { m_ ## name ## _idx, m_ ## name ## _size }; }
463#undef rangeGetter
464
465public:
466 quint16 m_language_id, m_script_id, m_territory_id;
467
468 // Offsets, then sizes, for each range:
469#define rangeIndex(name) quint16 m_ ## name ## _idx;
471#undef rangeIndex
472#define Size(name) quint8 m_ ## name ## _size;
474#undef Size
475
476#undef ForEachQLocaleRange
477
478 // Strays:
479 char m_currency_iso_code[3];
481 quint8 m_currency_rounding : 3; // (not yet used !)
485 quint8 m_grouping_top : 2; // Don't group until more significant group has this many digits.
486 quint8 m_grouping_higher : 3; // Number of digits between grouping separators
487 quint8 m_grouping_least : 3; // Number of digits after last grouping separator (before decimal).
488};
489
491{
492public:
494 QLocale::NumberOptions numberOptions = QLocale::DefaultNumberOptions,
495 int refs = 0)
497 m_index(index), m_numberOptions(numberOptions) {}
498
499 [[nodiscard]] quint16 languageId() const { return m_data->m_language_id; }
500 [[nodiscard]] quint16 territoryId() const { return m_data->m_territory_id; }
501
502 [[nodiscard]] QByteArray bcp47Name(char separator = '-') const;
503
504 [[nodiscard]] inline std::array<char, 4>
505 languageCode(QLocale::LanguageCodeTypes codeTypes = QLocale::AnyLanguageCode) const
506 {
507 return languageToCode(QLocale::Language(m_data->m_language_id), codeTypes);
508 }
509 [[nodiscard]] inline QLatin1StringView scriptCode() const
510 { return scriptToCode(QLocale::Script(m_data->m_script_id)); }
511 [[nodiscard]] inline QLatin1StringView territoryCode() const
512 { return territoryToCode(QLocale::Territory(m_data->m_territory_id)); }
513
514 [[nodiscard]] static const QLocalePrivate *get(const QLocale &l) { return l.d; }
515 [[nodiscard]] static std::array<char, 4>
517 QLocale::LanguageCodeTypes codeTypes = QLocale::AnyLanguageCode);
518 [[nodiscard]] static QLatin1StringView scriptToCode(QLocale::Script script);
519 [[nodiscard]] static QLatin1StringView territoryToCode(QLocale::Territory territory);
520 [[nodiscard]] static QLocale::Language
522 QLocale::LanguageCodeTypes codeTypes = QLocale::AnyLanguageCode) noexcept;
523 [[nodiscard]] static QLocale::Script codeToScript(QStringView code) noexcept;
524 [[nodiscard]] static QLocale::Territory codeToTerritory(QStringView code) noexcept;
525
526 [[nodiscard]] QLocale::MeasurementSystem measurementSystem() const;
527
528 // System locale has an m_data all its own; all others have m_data = locale_data + m_index
529 const QLocaleData *const m_data;
531 qsizetype m_index; // System locale needs this updated when m_data->id() changes.
532 QLocale::NumberOptions m_numberOptions;
533
535};
536
537#ifndef QT_NO_SYSTEMLOCALE
539#endif
540
541template <>
543{
544 // cannot use QLocalePrivate's copy constructor
545 // since it is deleted in C++11
546 return new QLocalePrivate(d->m_data, d->m_index, d->m_numberOptions);
547}
548
549// Also used to merely skip over an escape in a format string, advancint idx to
550// point after it (so not [[nodiscard]]):
552[[nodiscard]] bool qt_splitLocaleName(QStringView name, QStringView *lang = nullptr,
553 QStringView *script = nullptr, QStringView *cntry = nullptr);
555
556[[nodiscard]] constexpr inline bool ascii_isspace(uchar c)
557{
558 constexpr auto matcher = QtPrivate::makeCharacterSetMatch<QtPrivate::ascii_space_chars>();
559 return matcher.matches(c);
560}
561
563
564// ### move to qnamespace.h
565QT_DECL_METATYPE_EXTERN_TAGGED(QList<Qt::DayOfWeek>, QList_Qt__DayOfWeek, Q_CORE_EXPORT)
566#ifndef QT_NO_SYSTEMLOCALE
568 QSystemLocale__CurrencyToStringArgument, Q_CORE_EXPORT)
569#endif
570
571#endif // QLOCALE_P_H
\inmodule QtCore
Definition qbytearray.h:57
\inmodule QtCore
static QLatin1StringView scriptToCode(QLocale::Script script)
Definition qlocale.cpp:231
static const QLocalePrivate * get(const QLocale &l)
Definition qlocale_p.h:514
quint16 languageId() const
Definition qlocale_p.h:499
static QLocale::Language codeToLanguage(QStringView code, QLocale::LanguageCodeTypes codeTypes=QLocale::AnyLanguageCode) noexcept
Definition qlocale.cpp:95
const QLocaleData *const m_data
Definition qlocale_p.h:529
QLatin1StringView scriptCode() const
Definition qlocale_p.h:509
QLocale::MeasurementSystem measurementSystem() const
Definition qlocale.cpp:3284
quint16 territoryId() const
Definition qlocale_p.h:500
static QLatin1StringView territoryToCode(QLocale::Territory territory)
Definition qlocale.cpp:239
qsizetype m_index
Definition qlocale_p.h:531
static QLocale::Territory codeToTerritory(QStringView code) noexcept
Definition qlocale.cpp:187
static std::array< char, 4 > languageToCode(QLocale::Language language, QLocale::LanguageCodeTypes codeTypes=QLocale::AnyLanguageCode)
Definition qlocale.cpp:206
static QLocale::Script codeToScript(QStringView code) noexcept
Definition qlocale.cpp:167
QLocale::NumberOptions m_numberOptions
Definition qlocale_p.h:532
QLatin1StringView territoryCode() const
Definition qlocale_p.h:511
constexpr QLocalePrivate(const QLocaleData *data, qsizetype index, QLocale::NumberOptions numberOptions=QLocale::DefaultNumberOptions, int refs=0)
Definition qlocale_p.h:493
std::array< char, 4 > languageCode(QLocale::LanguageCodeTypes codeTypes=QLocale::AnyLanguageCode) const
Definition qlocale_p.h:505
static QBasicAtomicInt s_generation
Definition qlocale_p.h:534
QByteArray bcp47Name(char separator='-') const
Definition qlocale.cpp:458
QBasicAtomicInt ref
Definition qlocale_p.h:530
@ LastScript
Definition qlocale.h:563
MeasurementSystem
Definition qlocale.h:867
@ AnyLanguageCode
Definition qlocale.h:1114
@ LastTerritory
Definition qlocale.h:856
@ DefaultNumberOptions
Definition qlocale.h:878
@ LastLanguage
Definition qlocale.h:409
\inmodule QtCore
Definition qstringview.h:78
constexpr bool isEmpty() const noexcept
Returns whether this string view is empty - that is, whether {size() == 0}.
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
static QString fromRawData(const QChar *, qsizetype size)
Constructs a QString that uses the first size Unicode characters in the array unicode.
Definition qstring.cpp:9482
qsizetype fallbackLocaleIndex() const
Definition qlocale_p.h:538
@ StringToAlternateQuotation
Definition qlocale_p.h:160
@ DateTimeToStringShort
Definition qlocale_p.h:148
@ StandaloneMonthNameLong
Definition qlocale_p.h:166
@ ListToSeparatedString
Definition qlocale_p.h:162
@ StandaloneMonthNameNarrow
Definition qlocale_p.h:168
@ StringToStandardQuotation
Definition qlocale_p.h:159
@ StandaloneDayNameShort
Definition qlocale_p.h:170
@ StandaloneDayNameLong
Definition qlocale_p.h:169
@ StandaloneMonthNameShort
Definition qlocale_p.h:167
virtual QLocale fallbackLocale() const
\inmodule QtCore
Definition qvariant.h:65
QString str
[2]
short next
Definition keywords.cpp:445
Combined button and popup list for selecting options.
\macro QT_NO_KEYWORDS >
constexpr char ascii_space_chars[]
Definition qlocale_p.h:70
constexpr auto makeCharacterSetMatch()
Definition qlocale_p.h:79
#define Q_BASIC_ATOMIC_INITIALIZER(a)
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
qsizetype qt_repeatCount(QStringView s)
Definition qlocale.cpp:675
bool qt_splitLocaleName(QStringView name, QStringView *lang, QStringView *script, QStringView *land)
Definition qlocale.cpp:567
QString qt_readEscapedFormatString(QStringView format, qsizetype *idx)
Definition qlocale.cpp:625
#define rangeIndex(name)
Definition qlocale_p.h:469
#define rangeGetter(name)
Definition qlocale_p.h:460
#define ForEachQLocaleRange(X)
Definition qlocale_p.h:446
constexpr bool ascii_isspace(uchar c)
Definition qlocale_p.h:556
static constexpr int digits(int number)
#define QT_DECL_METATYPE_EXTERN_TAGGED(TYPE, TAG, EXPORT)
Definition qmetatype.h:1376
GLboolean GLboolean GLboolean b
GLsizei const GLfloat * v
[13]
GLenum mode
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLuint index
[2]
GLuint GLuint end
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLint GLsizei width
GLenum type
GLbitfield flags
GLenum GLuint GLintptr offset
GLint ref
GLuint name
GLint GLint GLint GLint GLint GLint GLint GLbitfield mask
GLint GLsizei GLsizei GLenum format
GLdouble s
[6]
Definition qopenglext.h:235
GLenum query
const GLubyte * c
GLint * exponent
GLuint in
GLuint64EXT * result
[6]
GLuint num
GLenum GLenum GLsizei void * table
GLenum GLint GLint * precision
#define Q_ASSERT(cond)
Definition qrandom.cpp:47
#define zero
#define Q_AUTOTEST_EXPORT
@ Q_PRIMITIVE_TYPE
Definition qtypeinfo.h:157
@ Q_RELOCATABLE_TYPE
Definition qtypeinfo.h:158
#define Q_DECLARE_TYPEINFO(TYPE, FLAGS)
Definition qtypeinfo.h:180
unsigned char uchar
Definition qtypes.h:32
unsigned short quint16
Definition qtypes.h:48
unsigned long long quint64
Definition qtypes.h:61
ptrdiff_t qsizetype
Definition qtypes.h:165
long long qint64
Definition qtypes.h:60
unsigned short ushort
Definition qtypes.h:33
QT_BEGIN_NAMESPACE typedef signed char qint8
Definition qtypes.h:45
unsigned char quint8
Definition qtypes.h:46
static const uint base
Definition qurlidna.cpp:20
QFuture< QSet< QChar > > set
[10]
static const auto matcher
[0]
QSharedPointer< T > other(t)
[5]
QQuickView * view
[0]
CharBuff buff
Definition qlocale_p.h:239
constexpr bool matches(uchar c) const
Definition qlocale_p.h:60
static constexpr int MaxRange
Definition qlocale_p.h:48
constexpr QCharacterSetMatch(std::string_view set)
Definition qlocale_p.h:51
QStringView viewListEntry(const char16_t *table, qsizetype index) const
Definition qlocale_p.h:417
char32_t ucsFirst(const char16_t *table) const
Definition qlocale_p.h:421
QString getData(const char16_t *table) const
Definition qlocale_p.h:403
QString getListEntry(const char16_t *table, qsizetype index) const
Definition qlocale_p.h:413
QStringView viewData(const char16_t *table) const
Definition qlocale_p.h:409
void setZero(QStringView zero)
Definition qlocale_p.h:345
bool isValid(NumberMode mode) const
Definition qlocale_p.h:365
QString positiveSign() const
Definition qlocale.cpp:989
static float convertDoubleToFloat(double d, bool *ok)
Definition qlocale_p.h:309
QString groupSeparator() const
Definition qlocale.cpp:948
QSimpleParsedNumber< qint64 > stringToLongLong(QStringView str, int base, QLocale::NumberOptions options) const
Definition qlocale.cpp:4477
char32_t zeroUcs() const
Definition qlocale.cpp:968
quint8 m_grouping_least
Definition qlocale_p.h:487
QString zeroDigit() const
Definition qlocale.cpp:963
Q_CORE_EXPORT ParsingResult validateChars(QStringView str, NumberMode numMode, int decDigits=-1, QLocale::NumberOptions number_options=QLocale::DefaultNumberOptions) const
Definition qlocale.cpp:4365
bool numberToCLocale(QStringView s, QLocale::NumberOptions number_options, NumberMode mode, CharBuff *result) const
Definition qlocale.cpp:4256
quint8 m_grouping_top
Definition qlocale_p.h:485
quint8 m_grouping_higher
Definition qlocale_p.h:486
QString decimalPoint() const
Definition qlocale.cpp:943
QString doubleToString(double d, int precision=-1, DoubleForm form=DFSignificantDigits, int width=-1, unsigned flags=NoFlags) const
Definition qlocale.cpp:3706
quint8 m_weekend_start
Definition qlocale_p.h:483
quint8 m_currency_digits
Definition qlocale_p.h:480
static const QLocaleData * c()
Definition qlocale.cpp:856
QLocaleId id() const
Definition qlocale_p.h:386
QString listSeparator() const
Definition qlocale.cpp:958
static qsizetype findLocaleIndex(QLocaleId localeId)
Definition qlocale.cpp:487
static QSimpleParsedNumber< quint64 > bytearrayToUnsLongLong(QByteArrayView num, int base)
Definition qlocale.cpp:4524
QString percentSign() const
Definition qlocale.cpp:953
@ BlankBeforePositive
Definition qlocale_p.h:262
@ AddTrailingZeroes
Definition qlocale_p.h:259
ForEachQLocaleRange(rangeIndex) ForEachQLocaleRange(Size) char m_currency_iso_code[3]
double stringToDouble(QStringView str, bool *ok, QLocale::NumberOptions options) const
Definition qlocale.cpp:4461
QString longLongToString(qint64 l, int precision=-1, int base=10, int width=-1, unsigned flags=NoFlags) const
Definition qlocale.cpp:3945
@ DoubleScientificMode
Definition qlocale_p.h:273
@ DoubleStandardMode
Definition qlocale_p.h:273
@ DFSignificantDigits
Definition qlocale_p.h:253
quint8 m_first_day_of_week
Definition qlocale_p.h:482
quint8 m_weekend_end
Definition qlocale_p.h:484
NumericData numericData(NumberMode mode) const
Definition qlocale.cpp:4029
quint8 m_currency_rounding
Definition qlocale_p.h:481
QString exponentSeparator() const
Definition qlocale.cpp:994
QString negativeSign() const
Definition qlocale.cpp:984
static Q_CORE_EXPORT QSimpleParsedNumber< qint64 > bytearrayToLongLong(QByteArrayView num, int base)
Definition qlocale.cpp:4516
QSimpleParsedNumber< quint64 > stringToUnsLongLong(QStringView str, int base, QLocale::NumberOptions options) const
Definition qlocale.cpp:4488
QString unsLongLongToString(quint64 l, int precision=-1, int base=10, int width=-1, unsigned flags=NoFlags) const
Definition qlocale.cpp:3960
bool operator==(QLocaleId other) const
Definition qlocale_p.h:192
QLocaleId withLikelySubtagsRemoved() const
Definition qlocale.cpp:382
bool matchesAll() const
Definition qlocale_p.h:201
bool operator!=(QLocaleId other) const
Definition qlocale_p.h:194
ushort script_id
Definition qlocale_p.h:223
bool acceptLanguage(quint16 lang) const
Definition qlocale_p.h:206
bool acceptScriptTerritory(QLocaleId other) const
Definition qlocale_p.h:212
QLocaleId withLikelySubtagsAdded() const
Fill in blank fields of a locale ID.
Definition qlocale.cpp:298
ushort territory_id
Definition qlocale_p.h:223
ushort language_id
Definition qlocale_p.h:223
static Q_AUTOTEST_EXPORT QLocaleId fromName(QStringView name)
Definition qlocale.cpp:611
bool isValid() const
Definition qlocale_p.h:196
bool ok() const
Definition qlocale_p.h:43
CurrencyToStringArgument(const QVariant &v, const QString &s)
Definition qlocale_p.h:118