5#ifndef QSTRINGITERATOR_H
6#define QSTRINGITERATOR_H
19#include <QtCore/private/qglobal_p.h>
20#include <QtCore/qstring.h>
26 QString::const_iterator i, pos, e;
28 static bool less(
const QChar *lhs,
const QChar *rhs)
noexcept
29 {
return std::less{}(lhs, rhs); }
64 Q_ASSERT_X(!less(position, i) && !less(e, position),
65 Q_FUNC_INFO,
"position out of bounds");
78 Q_ASSERT_X(hasNext(), Q_FUNC_INFO,
"iterator hasn't a next item");
80 if (Q_UNLIKELY((pos++)->isHighSurrogate())) {
81 if (Q_LIKELY(pos != e && pos->isLowSurrogate()))
88 Q_ASSERT_X(hasNext(), Q_FUNC_INFO,
"iterator hasn't a next item");
90 if (Q_UNLIKELY((pos++)->isHighSurrogate())) {
91 Q_ASSERT(hasNext() && pos->isLowSurrogate());
98 Q_ASSERT_X(hasNext(), Q_FUNC_INFO,
"iterator hasn't a next item");
100 if (Q_UNLIKELY(pos->isHighSurrogate())) {
101 Q_ASSERT(less(pos + 1, e) && pos[1].isLowSurrogate());
102 return QChar::surrogateToUcs4(pos[0], pos[1]);
105 return pos->unicode();
110 Q_ASSERT_X(hasNext(), Q_FUNC_INFO,
"iterator hasn't a next item");
112 if (Q_UNLIKELY(pos->isSurrogate())) {
113 if (Q_LIKELY(pos->isHighSurrogate())) {
114 const QChar *low = pos + 1;
115 if (Q_LIKELY(low != e && low->isLowSurrogate()))
116 return QChar::surrogateToUcs4(*pos, *low);
121 return pos->unicode();
126 Q_ASSERT_X(hasNext(), Q_FUNC_INFO,
"iterator hasn't a next item");
128 const QChar cur = *pos++;
129 if (Q_UNLIKELY(cur.isHighSurrogate())) {
130 Q_ASSERT(hasNext() && pos->isLowSurrogate());
131 return QChar::surrogateToUcs4(cur, *pos++);
133 return cur.unicode();
138 Q_ASSERT_X(hasNext(), Q_FUNC_INFO,
"iterator hasn't a next item");
140 const QChar uc = *pos++;
141 if (Q_UNLIKELY(uc.isSurrogate())) {
142 if (Q_LIKELY(uc.isHighSurrogate() && hasNext() && pos->isLowSurrogate()))
143 return QChar::surrogateToUcs4(uc, *pos++);
159 Q_ASSERT_X(hasPrevious(), Q_FUNC_INFO,
"iterator hasn't a previous item");
161 if (Q_UNLIKELY((--pos)->isLowSurrogate())) {
162 const QChar *high = pos - 1;
163 if (Q_LIKELY(high != i - 1 && high->isHighSurrogate()))
170 Q_ASSERT_X(hasPrevious(), Q_FUNC_INFO,
"iterator hasn't a previous item");
172 if (Q_UNLIKELY((--pos)->isLowSurrogate())) {
173 Q_ASSERT(hasPrevious() && pos[-1].isHighSurrogate());
180 Q_ASSERT_X(hasPrevious(), Q_FUNC_INFO,
"iterator hasn't a previous item");
182 if (Q_UNLIKELY(pos[-1].isLowSurrogate())) {
183 Q_ASSERT(less(i + 1, pos) && pos[-2].isHighSurrogate());
184 return QChar::surrogateToUcs4(pos[-2], pos[-1]);
186 return pos[-1].unicode();
191 Q_ASSERT_X(hasPrevious(), Q_FUNC_INFO,
"iterator hasn't a previous item");
193 if (Q_UNLIKELY(pos[-1].isSurrogate())) {
194 if (Q_LIKELY(pos[-1].isLowSurrogate())) {
195 const QChar *high = pos - 2;
196 if (Q_LIKELY(high != i - 1 && high->isHighSurrogate()))
197 return QChar::surrogateToUcs4(*high, pos[-1]);
202 return pos[-1].unicode();
207 Q_ASSERT_X(hasPrevious(), Q_FUNC_INFO,
"iterator hasn't a previous item");
209 const QChar cur = *--pos;
210 if (Q_UNLIKELY(cur.isLowSurrogate())) {
211 Q_ASSERT(hasPrevious() && pos[-1].isHighSurrogate());
212 return QChar::surrogateToUcs4(*--pos, cur);
214 return cur.unicode();
219 Q_ASSERT_X(hasPrevious(), Q_FUNC_INFO,
"iterator hasn't a previous item");
221 const QChar uc = *--pos;
222 if (Q_UNLIKELY(uc.isSurrogate())) {
223 if (Q_LIKELY(uc.isLowSurrogate() && hasPrevious() && pos[-1].isHighSurrogate()))
224 return QChar::surrogateToUcs4(*--pos, uc);
The QCalendar class describes calendar systems.
const QLocaleData *const m_data
QLocale::MeasurementSystem measurementSystem() const
QByteArray bcp47Name(char separator='-') const
char32_t peekNext(char32_t invalidAs=QChar::ReplacementCharacter) const
char32_t next(char32_t invalidAs=QChar::ReplacementCharacter)
QStringIterator(const QChar *begin, qsizetype idx, const QChar *end)
QString::const_iterator position() const
char32_t previous(char32_t invalidAs=QChar::ReplacementCharacter)
QStringIterator(QStringView string, qsizetype idx=0)
char32_t peekPreviousUnchecked() const
QStringIterator(const QChar *begin, const QChar *end)
char32_t peekNextUnchecked() const
void setPosition(QString::const_iterator position)
char32_t peekPrevious(char32_t invalidAs=QChar::ReplacementCharacter) const
char32_t previousUnchecked()
Combined button and popup list for selecting options.
Q_GLOBAL_STATIC(DefaultRoleNames, qDefaultRoleNames, { { Qt::DisplayRole, "display" }, { Qt::DecorationRole, "decoration" }, { Qt::EditRole, "edit" }, { Qt::ToolTipRole, "toolTip" }, { Qt::StatusTipRole, "statusTip" }, { Qt::WhatsThisRole, "whatsThis" }, }) const QHash< int
static unsigned calculateFlags(int fieldWidth, char32_t fillChar, const QLocale &locale)
static QString calculateFiller(qsizetype padding, char32_t fillChar, qsizetype fieldWidth, const QLocaleData *localeData)
QDebug operator<<(QDebug dbg, const QLocale &l)
static QLocalePrivate * findLocalePrivate(QLocale::Language language, QLocale::Script script, QLocale::Territory territory)
static std::optional< QString > systemLocaleString(const QLocaleData *that, QSystemLocale::QueryType type)
static const QSystemLocale * systemLocale()
static bool checkParsed(QByteArrayView num, qsizetype used)
static QString rawWeekDayName(const QLocaleData *data, const int day, QLocale::FormatType type)
QDataStream & operator>>(QDataStream &ds, QLocale &l)
#define CheckCandidate(id)
static Q_DECL_COLD_FUNCTION void badSeparatorWarning(const char *method, char sep)
static QString rawStandaloneWeekDayName(const QLocaleData *data, const int day, QLocale::FormatType type)
static constexpr QLocale::NumberOptions defaultNumberOptions(QLocale::Language forLanguage)
static QStringView findTag(QStringView name) noexcept
static bool validTag(QStringView tag)
static qsizetype scriptIndex(QStringView code, Qt::CaseSensitivity cs) noexcept
static const QCalendarLocale & getMonthDataFor(const QLocalePrivate *loc, const QCalendarLocale *table)
static T toIntegral_helper(const QLocalePrivate *d, QStringView str, bool *ok)
static bool timeFormatContainsAP(QStringView format)
size_t qHash(const QLocale &key, size_t seed) noexcept
bool comparesEqual(const QLocale &loc, QLocale::Language lang)
static qsizetype findLocaleIndexById(QLocaleId localeId) noexcept
static constexpr qsizetype locale_data_size
static void updateSystemPrivate()
static QString rawMonthName(const QCalendarLocale &localeData, const char16_t *monthsData, int month, QLocale::FormatType type)
static qsizetype stringWidth(QStringView text)
static QLocalePrivate * c_private() noexcept
static const QLocaleData * defaultData()
static QString rawStandaloneMonthName(const QCalendarLocale &localeData, const char16_t *monthsData, int month, QLocale::FormatType type)
static QString localeString(const QLocaleData *that, QSystemLocale::QueryType type, QLocaleData::DataRange range)
static const QLocaleData * systemData(qsizetype *sysIndex=nullptr)
static QString offsetFromAbbreviation(QString &&text)
static qsizetype defaultIndex()
static constexpr char16_t single_character_data[]
static constexpr char16_t days_data[]
static constexpr QLocaleData locale_data[]
static constexpr QLocaleId likely_subtags[]
static constexpr unsigned char territory_code_list[]
static constexpr unsigned char script_code_list[]
bool qt_splitLocaleName(QStringView name, QStringView *lang=nullptr, QStringView *script=nullptr, QStringView *cntry=nullptr) noexcept
qsizetype qt_repeatCount(QStringView s) noexcept
QString qt_readEscapedFormatString(QStringView format, qsizetype *idx)
char32_t ucsFirst(const char16_t *table) const
QString positiveSign() const
QString groupSeparator() const
QSimpleParsedNumber< qint64 > stringToLongLong(QStringView str, int base, QLocale::NumberOptions options) const
QString zeroDigit() 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
QString listSeparator() const
QString percentSign() const
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
NumericData numericData(NumberMode mode) const
QString exponentSeparator() const
QString negativeSign() const
static const QLocaleData * c() noexcept
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
QLocaleId withLikelySubtagsAdded() const noexcept
Fill in blank fields of a locale ID.
QLocaleId withLikelySubtagsRemoved() const noexcept
bool operator==(QLocaleId other) const noexcept
bool matchesAll() const noexcept
QByteArray name(char separator='-') const