5#ifndef QTIMEZONELOCALE_P_H
6#define QTIMEZONELOCALE_P_H
18#include <private/qglobal_p.h>
20#include <QtCore/qstring.h>
21#include <QtCore/qtimezone.h>
24#include <unicode/ucal.h>
26#include <QtCore/private/qlocale_p.h>
35namespace QtTimeZoneLocale {
37QString ucalTimeZoneDisplayName(UCalendar *ucal, QTimeZone::TimeType timeType,
38 QTimeZone::NameType nameType,
39 const QByteArray &localeCode);
41bool ucalKnownTimeZoneId(
const QString &id);
50QString zoneOffsetFormat(
const QLocale &locale, qsizetype locInd, QLocale::FormatType width,
51 const QDateTime &when,
int offsetSeconds);
56#define rangeGetter(name)
57 constexpr QLocaleData::DataRange name() const
58 { return { m_ ## name ## _idx, m_ ## name ## _size }; }
60#define declFieldIndex(name) quint16 m_ ## name ## _idx;
61#define declBigFieldIndex(name) quint32 m_ ## name ## _idx;
63#define declFieldSize(name) quint8 m_ ## name ## _size;
65#define forEachNameType(X, form) X(form ## Generic) X(form ## Standard) X(form ## DaylightSaving)
67#define timeTypeRange(form)
68 constexpr QLocaleData::DataRange form ## Name(QTimeZone::TimeType timeType) const
71 case QTimeZone::StandardTime: return form ## Standard();
72 case QTimeZone::DaylightTime: return form ## DaylightSaving();
73 case QTimeZone::GenericTime: return form ## Generic();
75 Q_UNREACHABLE_RETURN({});
82#ifdef QT_CLDR_ZONE_DEBUG
95#define forEachField(X)
96 X(posHourFormat) X(negHourFormat) X(offsetGmtFormat) X(fallbackFormat)
97 forEachNameType(X, regionFormat)
108#define regionFormatName regionFormatRange
110#undef regionFormatName
131 QTimeZone::TimeType timeType)
const
133 return nameType == QTimeZone::ShortName ? shortName(timeType) : longName(timeType);
137#define forEach32BitField(X) forEachNameType(X, long)
138#define forEach16BitField(X) forEachNameType(X, short)
139#define forEachField(X) forEach32BitField(X) forEach16BitField(X)
150#undef forEach16BitField
151#undef forEach32BitField
160#define forEachField(X) forEachNameType(X, long)
177#define forEachField(X) forEachNameType(X, short)
189#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