4#ifndef QTIMEZONELOCALE_P_H
5#define QTIMEZONELOCALE_P_H
17#include <private/qglobal_p.h>
19#include <QtCore/qstring.h>
20#include <QtCore/qtimezone.h>
23#include <unicode/ucal.h>
25#include <QtCore/private/qlocale_p.h>
34namespace QtTimeZoneLocale {
36QString ucalTimeZoneDisplayName(UCalendar *ucal, QTimeZone::TimeType timeType,
37 QTimeZone::NameType nameType,
38 const QByteArray &localeCode);
40bool ucalKnownTimeZoneId(
const QString &id);
49QString zoneOffsetFormat(
const QLocale &locale, qsizetype locInd, QLocale::FormatType width,
50 const QDateTime &when,
int offsetSeconds);
55#define rangeGetter(name)
56 constexpr QLocaleData::DataRange name() const
57 { return { m_ ## name ## _idx, m_ ## name ## _size }; }
59#define declFieldIndex(name) quint16 m_ ## name ## _idx;
60#define declBigFieldIndex(name) quint32 m_ ## name ## _idx;
62#define declFieldSize(name) quint8 m_ ## name ## _size;
64#define forEachNameType(X, form) X(form ## Generic) X(form ## Standard) X(form ## DaylightSaving)
66#define timeTypeRange(form)
67 constexpr QLocaleData::DataRange form ## Name(QTimeZone::TimeType timeType) const
70 case QTimeZone::StandardTime: return form ## Standard();
71 case QTimeZone::DaylightTime: return form ## DaylightSaving();
72 case QTimeZone::GenericTime: return form ## Generic();
74 Q_UNREACHABLE_RETURN({});
81#ifdef QT_CLDR_ZONE_DEBUG
94#define forEachField(X)
95 X(posHourFormat) X(negHourFormat) X(offsetGmtFormat) X(fallbackFormat)
96 forEachNameType(X, regionFormat)
107#define regionFormatName regionFormatRange
109#undef regionFormatName
130 QTimeZone::TimeType timeType)
const
132 return nameType == QTimeZone::ShortName ? shortName(timeType) : longName(timeType);
136#define forEach32BitField(X) forEachNameType(X, long)
137#define forEach16BitField(X) forEachNameType(X, short)
138#define forEachField(X) forEach32BitField(X) forEach16BitField(X)
149#undef forEach16BitField
150#undef forEach32BitField
159#define forEachField(X) forEachNameType(X, long)
176#define forEachField(X) forEachNameType(X, short)
188#undef forEachNameType
QList< qsizetype > fallbackLocalesFor(qsizetype index)
QList< QByteArrayView > ianaIdsForTerritory(QLocale::Territory territory)
QT_REQUIRE_CONFIG(animation)
#define rangeGetter(name)
#define timeTypeRange(form)
QT_REQUIRE_CONFIG(timezone_locale)
#define forEach16BitField(X)
#define forEach32BitField(X)
static bool ucalOffsetsAtTime(UCalendar *m_ucal, qint64 atMSecsSinceEpoch, int *utcOffset, int *dstOffset)
static int ucalDaylightOffset(const QByteArray &id)
static QList< QByteArray > uenumToIdList(UEnumeration *uenum)
QT_REQUIRE_CONFIG(timezone)
quint32 m_metaLongTableStart
quint16 m_metaShortTableStart
quint32 m_exemplarTableStart
quint32 m_exemplarCity_idx
quint8 m_exemplarCity_size
constexpr QByteArrayView ianaId() const
constexpr QLocaleData::DataRange name(QTimeZone::NameType nameType, QTimeZone::TimeType timeType) const
constexpr QByteArrayView ianaId() const