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>
29#include <private/qstdweb_p.h>
48 static constexpr int MaxRange = std::numeric_limits<MaskType>::digits;
55 int idx =
uchar(
c) - Lowest;
56 mask |= MaskType(1) << idx;
62 unsigned idx =
c - Lowest;
65 return (
mask >> idx) & 1;
78template <
const char *Set,
int ForcedLowest = -1>
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");
87 if constexpr (ForcedLowest >= 0) {
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) {
95 using MaskType = std::conditional_t<(MaxElement < 32), quint32, qregisteruint>;
96 return QCharacterSetMatch<MaskType, 0>(
view);
98 using MaskType = std::conditional_t<(Range < 32), quint32, quint64>;
99 return QCharacterSetMatch<MaskType, MinElement>(
view);
171 StandaloneDayNameNarrow
175 virtual QLocale fallbackLocale()
const;
176 inline qsizetype fallbackLocaleIndex()
const;
277 PMDecimalDigits = 0x01,
278 PMSignificantDigits = 0x02,
279 PMChopTrailingZeros = 0x03
283 PrecisionMode pm,
bool mustMarkDecimal,
284 bool groupDigits)
const;
286 PrecisionMode pm,
bool mustMarkDecimal,
287 int minExponentDigits)
const;
288 [[nodiscard]]
QString signPrefix(
bool negative,
unsigned flags)
const;
312 bool b = convertDoubleTo<float>(
d, &
result);
319 QLocale::NumberOptions options)
const;
320 [[nodiscard]] QSimpleParsedNumber<qint64>
322 [[nodiscard]] QSimpleParsedNumber<quint64>
326 [[nodiscard]] Q_CORE_EXPORT
328 [[nodiscard]]
static QSimpleParsedNumber<quint64>
336#ifndef QT_NO_SYSTEMLOCALE
349 switch (
zero.size()) {
387 {
return QLocaleId { m_language_id, m_script_id, m_territory_id }; }
394 [[nodiscard]]
char32_t zeroUcs()
const;
432 const char16_t separator =
';';
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)
460#define rangeGetter(name) \
461 [[nodiscard]] DataRange name() const { return { m_ ## name ## _idx, m_ ## name ## _size }; }
466 quint16 m_language_id, m_script_id, m_territory_id;
469#define rangeIndex(name) quint16 m_ ## name ## _idx;
472#define Size(name) quint8 m_ ## name ## _size;
476#undef ForEachQLocaleRange
479 char m_currency_iso_code[3];
504 [[nodiscard]]
inline std::array<char, 4>
515 [[nodiscard]]
static std::array<char, 4>
537#ifndef QT_NO_SYSTEMLOCALE
558 constexpr auto matcher = QtPrivate::makeCharacterSetMatch<QtPrivate::ascii_space_chars>();
566#ifndef QT_NO_SYSTEMLOCALE
568 QSystemLocale__CurrencyToStringArgument, Q_CORE_EXPORT)
static QLatin1StringView scriptToCode(QLocale::Script script)
static const QLocalePrivate * get(const QLocale &l)
quint16 languageId() const
static QLocale::Language codeToLanguage(QStringView code, QLocale::LanguageCodeTypes codeTypes=QLocale::AnyLanguageCode) noexcept
const QLocaleData *const m_data
QLatin1StringView scriptCode() const
QLocale::MeasurementSystem measurementSystem() const
quint16 territoryId() const
static QLatin1StringView territoryToCode(QLocale::Territory territory)
static QLocale::Territory codeToTerritory(QStringView code) noexcept
static std::array< char, 4 > languageToCode(QLocale::Language language, QLocale::LanguageCodeTypes codeTypes=QLocale::AnyLanguageCode)
static QLocale::Script codeToScript(QStringView code) noexcept
QLocale::NumberOptions m_numberOptions
QLatin1StringView territoryCode() const
constexpr QLocalePrivate(const QLocaleData *data, qsizetype index, QLocale::NumberOptions numberOptions=QLocale::DefaultNumberOptions, int refs=0)
std::array< char, 4 > languageCode(QLocale::LanguageCodeTypes codeTypes=QLocale::AnyLanguageCode) const
static QBasicAtomicInt s_generation
QByteArray bcp47Name(char separator='-') const
constexpr bool isEmpty() const noexcept
Returns whether this string view is empty - that is, whether {size() == 0}.
\macro QT_RESTRICTED_CAST_FROM_ASCII
static QString fromRawData(const QChar *, qsizetype size)
Constructs a QString that uses the first size Unicode characters in the array unicode.
qsizetype fallbackLocaleIndex() const
@ StringToAlternateQuotation
@ StandaloneMonthNameLong
@ StandaloneMonthNameNarrow
@ StringToStandardQuotation
@ StandaloneMonthNameShort
virtual QLocale fallbackLocale() const
Combined button and popup list for selecting options.
constexpr char ascii_space_chars[]
constexpr auto makeCharacterSetMatch()
#define Q_BASIC_ATOMIC_INITIALIZER(a)
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
qsizetype qt_repeatCount(QStringView s)
bool qt_splitLocaleName(QStringView name, QStringView *lang, QStringView *script, QStringView *land)
QString qt_readEscapedFormatString(QStringView format, qsizetype *idx)
#define rangeGetter(name)
#define ForEachQLocaleRange(X)
constexpr bool ascii_isspace(uchar c)
GLboolean GLboolean GLboolean b
GLsizei const GLfloat * v
[13]
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLenum GLuint GLintptr offset
GLint GLint GLint GLint GLint GLint GLint GLbitfield mask
GLint GLsizei GLsizei GLenum format
GLenum GLenum GLsizei void * table
GLenum GLint GLint * precision
#define Q_AUTOTEST_EXPORT
#define Q_DECLARE_TYPEINFO(TYPE, FLAGS)
unsigned long long quint64
QT_BEGIN_NAMESPACE typedef signed char qint8
QFuture< QSet< QChar > > set
[10]
static const auto matcher
[0]
constexpr bool matches(uchar c) const
static constexpr int MaxRange
constexpr QCharacterSetMatch(std::string_view set)
QStringView viewListEntry(const char16_t *table, qsizetype index) const
char32_t ucsFirst(const char16_t *table) const
QString getData(const char16_t *table) const
QString getListEntry(const char16_t *table, qsizetype index) const
QStringView viewData(const char16_t *table) const
void setZero(QStringView zero)
bool isValid(NumberMode mode) const
QString positiveSign() const
static float convertDoubleToFloat(double d, bool *ok)
QString groupSeparator() const
QSimpleParsedNumber< qint64 > stringToLongLong(QStringView str, int base, QLocale::NumberOptions options) const
QString zeroDigit() const
Q_CORE_EXPORT ParsingResult validateChars(QStringView str, NumberMode numMode, int decDigits=-1, QLocale::NumberOptions number_options=QLocale::DefaultNumberOptions) const
bool numberToCLocale(QStringView s, QLocale::NumberOptions number_options, NumberMode mode, CharBuff *result) const
QString decimalPoint() const
QString doubleToString(double d, int precision=-1, DoubleForm form=DFSignificantDigits, int width=-1, unsigned flags=NoFlags) const
static const QLocaleData * c()
QString listSeparator() const
static qsizetype findLocaleIndex(QLocaleId localeId)
static QSimpleParsedNumber< quint64 > bytearrayToUnsLongLong(QByteArrayView num, int base)
QString percentSign() const
ForEachQLocaleRange(rangeIndex) ForEachQLocaleRange(Size) char m_currency_iso_code[3]
double stringToDouble(QStringView str, bool *ok, QLocale::NumberOptions options) const
QString longLongToString(qint64 l, int precision=-1, int base=10, int width=-1, unsigned flags=NoFlags) const
quint8 m_first_day_of_week
NumericData numericData(NumberMode mode) const
quint8 m_currency_rounding
QString exponentSeparator() const
QString negativeSign() const
static Q_CORE_EXPORT QSimpleParsedNumber< qint64 > bytearrayToLongLong(QByteArrayView num, int base)
QSimpleParsedNumber< quint64 > stringToUnsLongLong(QStringView str, int base, QLocale::NumberOptions options) const
QString unsLongLongToString(quint64 l, int precision=-1, int base=10, int width=-1, unsigned flags=NoFlags) const
bool operator==(QLocaleId other) const
QLocaleId withLikelySubtagsRemoved() const
bool operator!=(QLocaleId other) const
bool acceptLanguage(quint16 lang) const
bool acceptScriptTerritory(QLocaleId other) const
QLocaleId withLikelySubtagsAdded() const
Fill in blank fields of a locale ID.
static Q_AUTOTEST_EXPORT QLocaleId fromName(QStringView name)
CurrencyToStringArgument(const QVariant &v, const QString &s)
CurrencyToStringArgument()