6#ifndef QTIMEZONEPRIVATE_P_H
7#define QTIMEZONEPRIVATE_P_H
22#include "private/qlocale_p.h"
25#include <unicode/ucal.h>
69 virtual QString comment()
const;
72 QTimeZone::NameType nameType,
75 QTimeZone::NameType nameType,
79 virtual int offsetFromUtc(
qint64 atMSecsSinceEpoch)
const;
80 virtual int standardTimeOffset(
qint64 atMSecsSinceEpoch)
const;
81 virtual int daylightTimeOffset(
qint64 atMSecsSinceEpoch)
const;
83 virtual bool hasDaylightTime()
const;
84 virtual bool isDaylightTime(
qint64 atMSecsSinceEpoch)
const;
89 virtual bool hasTransitions()
const;
90 virtual Data nextTransition(
qint64 afterMSecsSinceEpoch)
const;
91 virtual Data previousTransition(
qint64 beforeMSecsSinceEpoch)
const;
96 virtual bool isTimeZoneIdAvailable(
const QByteArray &ianaId)
const;
105 {
return (std::numeric_limits<qint64>::max)(); }
107 {
return (std::numeric_limits<qint64>::min)() + 1; }
109 {
return (std::numeric_limits<qint64>::min)(); }
111 {
return (std::numeric_limits<int>::min)(); }
113 static QTimeZone::OffsetData invalidOffsetData();
114 static QTimeZone::OffsetData toOffsetData(
const Data &
data);
115 static bool isValidId(
const QByteArray &ianaId);
116 static QString isoOffsetFormat(
int offsetFromUtc,
117 QTimeZone::NameType
mode = QTimeZone::OffsetName);
169 QString comment()
const override;
172 QTimeZone::NameType nameType,
173 const QLocale &locale)
const override;
174 QString abbreviation(
qint64 atMSecsSinceEpoch)
const override;
176 int standardTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
177 int daylightTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
181 bool isTimeZoneIdAvailable(
const QByteArray &ianaId)
const override;
206 QIcuTimeZonePrivate();
208 QIcuTimeZonePrivate(
const QByteArray &ianaId);
209 QIcuTimeZonePrivate(
const QIcuTimeZonePrivate &
other);
210 ~QIcuTimeZonePrivate();
212 QIcuTimeZonePrivate *clone()
const override;
216 const QLocale &locale)
const override;
217 QString abbreviation(
qint64 atMSecsSinceEpoch)
const override;
219 int offsetFromUtc(
qint64 atMSecsSinceEpoch)
const override;
220 int standardTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
221 int daylightTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
223 bool hasDaylightTime()
const override;
224 bool isDaylightTime(
qint64 atMSecsSinceEpoch)
const override;
228 bool hasTransitions()
const override;
229 Data nextTransition(
qint64 afterMSecsSinceEpoch)
const override;
230 Data previousTransition(
qint64 beforeMSecsSinceEpoch)
const override;
245#if defined(Q_OS_UNIX) && !defined(Q_OS_DARWIN) && !defined(Q_OS_ANDROID)
246struct QTzTransitionTime
252struct QTzTransitionRule
259constexpr inline bool operator==(
const QTzTransitionRule &lhs,
const QTzTransitionRule &rhs)
noexcept
260{
return lhs.stdOffset == rhs.stdOffset && lhs.dstOffset == rhs.dstOffset && lhs.abbreviationIndex == rhs.abbreviationIndex; }
261constexpr inline bool operator!=(
const QTzTransitionRule &lhs,
const QTzTransitionRule &rhs)
noexcept
266struct QTzTimeZoneCacheEntry
272 QTzTransitionRule m_preZoneRule;
278 QTzTimeZonePrivate(
const QTzTimeZonePrivate &) =
default;
281 QTzTimeZonePrivate();
284 ~QTzTimeZonePrivate();
286 QTzTimeZonePrivate *clone()
const override;
289 QString comment()
const override;
292 QTimeZone::NameType nameType,
293 const QLocale &locale)
const override;
295 QTimeZone::NameType nameType,
296 const QLocale &locale)
const override;
297 QString abbreviation(
qint64 atMSecsSinceEpoch)
const override;
299 int offsetFromUtc(
qint64 atMSecsSinceEpoch)
const override;
300 int standardTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
301 int daylightTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
303 bool hasDaylightTime()
const override;
304 bool isDaylightTime(
qint64 atMSecsSinceEpoch)
const override;
308 bool hasTransitions()
const override;
309 Data nextTransition(
qint64 afterMSecsSinceEpoch)
const override;
310 Data previousTransition(
qint64 beforeMSecsSinceEpoch)
const override;
314 bool isTimeZoneIdAvailable(
const QByteArray &ianaId)
const override;
322 Data dataForTzTransition(QTzTransitionTime tran)
const;
323 Data dataFromRule(QTzTransitionRule
rule,
qint64 msecsSinceEpoch)
const;
325# ifdef __cpp_lib_is_final
326 static_assert(std::is_final<QIcuTimeZonePrivate>::value,
327 "if QIcuTimeZonePrivate isn't final, we may need to specialize "
328 "QExplicitlySharedDataPointer::clone() to call QTimeZonePrivate::clone()");
332 QTzTimeZoneCacheEntry cached_data;
342 QMacTimeZonePrivate();
344 QMacTimeZonePrivate(
const QByteArray &ianaId);
345 QMacTimeZonePrivate(
const QMacTimeZonePrivate &
other);
346 ~QMacTimeZonePrivate();
348 QMacTimeZonePrivate *clone()
const override;
350 QString comment()
const override;
353 const QLocale &locale)
const override;
354 QString abbreviation(
qint64 atMSecsSinceEpoch)
const override;
356 int offsetFromUtc(
qint64 atMSecsSinceEpoch)
const override;
357 int standardTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
358 int daylightTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
360 bool hasDaylightTime()
const override;
361 bool isDaylightTime(
qint64 atMSecsSinceEpoch)
const override;
365 bool hasTransitions()
const override;
366 Data nextTransition(
qint64 afterMSecsSinceEpoch)
const override;
367 Data previousTransition(
qint64 beforeMSecsSinceEpoch)
const override;
373 NSTimeZone *nsTimeZone()
const;
386 struct QWinTransitionRule {
388 int standardTimeBias;
389 int daylightTimeBias;
390 SYSTEMTIME standardTimeRule;
391 SYSTEMTIME daylightTimeRule;
395 QWinTimeZonePrivate();
397 QWinTimeZonePrivate(
const QByteArray &ianaId);
398 QWinTimeZonePrivate(
const QWinTimeZonePrivate &
other);
399 ~QWinTimeZonePrivate();
401 QWinTimeZonePrivate *clone()
const override;
403 QString comment()
const override;
406 const QLocale &locale)
const override;
407 QString abbreviation(
qint64 atMSecsSinceEpoch)
const override;
409 int offsetFromUtc(
qint64 atMSecsSinceEpoch)
const override;
410 int standardTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
411 int daylightTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
413 bool hasDaylightTime()
const override;
414 bool isDaylightTime(
qint64 atMSecsSinceEpoch)
const override;
418 bool hasTransitions()
const override;
419 Data nextTransition(
qint64 afterMSecsSinceEpoch)
const override;
420 Data previousTransition(
qint64 beforeMSecsSinceEpoch)
const override;
428 QTimeZone::TimeType
type,
bool fakeDst =
false)
const;
445 QAndroidTimeZonePrivate();
447 QAndroidTimeZonePrivate(
const QByteArray &ianaId);
448 QAndroidTimeZonePrivate(
const QAndroidTimeZonePrivate &
other);
449 ~QAndroidTimeZonePrivate();
451 QAndroidTimeZonePrivate *clone()
const override;
454 const QLocale &locale)
const override;
455 QString abbreviation(
qint64 atMSecsSinceEpoch)
const override;
457 int offsetFromUtc(
qint64 atMSecsSinceEpoch)
const override;
458 int standardTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
459 int daylightTimeOffset(
qint64 atMSecsSinceEpoch)
const override;
461 bool hasDaylightTime()
const override;
462 bool isDaylightTime(
qint64 atMSecsSinceEpoch)
const override;
\inmodule QtCore\reentrant
\macro QT_RESTRICTED_CAST_FROM_ASCII
static QByteArray utcQByteArray()
virtual QString displayName(qint64 atMSecsSinceEpoch, QTimeZone::NameType nameType, const QLocale &locale) const
static constexpr qint64 invalidMSecs()
static constexpr qint64 maxMSecs()
static constexpr qint64 minMSecs()
static constexpr qint64 invalidSeconds()
static QString utcQString()
Combined button and popup list for selecting options.
#define QByteArrayLiteral(str)
static QString displayName(CGDirectDisplayID displayID)
constexpr bool operator!=(const timespec &t1, const timespec &t2)
#define Q_FORWARD_DECLARE_OBJC_CLASS(classname)
DBusConnection const char * rule
static const qint64 invalidData
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
bool operator==(const QRandomGenerator &rng1, const QRandomGenerator &rng2)
#define QStringLiteral(str)
static QT_BEGIN_NAMESPACE QVariant hint(QPlatformIntegration::StyleHint h)
#define Q_AUTOTEST_EXPORT
static QT_BEGIN_NAMESPACE void init(QTextBoundaryFinder::BoundaryType type, QStringView str, QCharAttributes *attributes)
#define Q_DECLARE_TYPEINFO(TYPE, FLAGS)