Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
|
#include "qtimezone.h"
#include "qtimezoneprivate_p.h"
#include "private/qlocale_tools_p.h"
#include "private/qlocking_p.h"
#include <QtCore/QDataStream>
#include <QtCore/QDateTime>
#include <QtCore/QDirListing>
#include <QtCore/QFile>
#include <QtCore/QCache>
#include <QtCore/QMap>
#include <QtCore/QMutex>
#include <qdebug.h>
#include <qplatformdefs.h>
#include <algorithm>
#include <memory>
#include <errno.h>
#include <limits.h>
#include <sys/param.h>
#include <unistd.h>
Go to the source code of this file.
Classes | |
struct | QTzTimeZone |
struct | QTzHeader |
struct | QTzTransition |
struct | QTzType |
class | QTzTimeZoneCache |
Macros | |
#define | TZ_MAGIC "TZif" |
#define | TZ_MAX_TIMES 1200 |
#define | TZ_MAX_TYPES 256 |
#define | TZ_MAX_CHARS 50 |
#define | TZ_MAX_LEAPS 50 |
Typedefs | |
typedef QHash< QByteArray, QTzTimeZone > | QTzTimeZoneHash |
Functions | |
static bool | isTzFile (const QString &name) |
static bool | openZoneInfo (const QString &name, QFile *file) |
static QTzTimeZoneHash | loadTzTimeZones () |
Q_GLOBAL_STATIC (const QTzTimeZoneHash, tzZones, loadTzTimeZones()) | |
Q_DECLARE_TYPEINFO (QTzTransition, Q_PRIMITIVE_TYPE) | |
Q_DECLARE_TYPEINFO (QTzType, Q_PRIMITIVE_TYPE) | |
static QTzHeader | parseTzHeader (QDataStream &ds, bool *ok) |
static QList< QTzTransition > | parseTzTransitions (QDataStream &ds, int tzh_timecnt, bool longTran) |
static QList< QTzType > | parseTzTypes (QDataStream &ds, int tzh_typecnt) |
static QMap< int, QByteArray > | parseTzAbbreviations (QDataStream &ds, int tzh_charcnt, const QList< QTzType > &types) |
static void | parseTzLeapSeconds (QDataStream &ds, int tzh_leapcnt, bool longTran) |
static QList< QTzType > | parseTzIndicators (QDataStream &ds, const QList< QTzType > &types, int tzh_ttisstdcnt, int tzh_ttisgmtcnt) |
static QByteArray | parseTzPosixRule (QDataStream &ds) |
static QDate | calculateDowDate (int year, int month, int dayOfWeek, int week) |
static QDate | calculatePosixDate (const QByteArray &dateRule, int year) |
static int | parsePosixTime (const char *begin, const char *end) |
static int | parsePosixTransitionTime (const QByteArray &timeRule) |
static int | parsePosixOffset (const char *begin, const char *end) |
static bool | asciiIsLetter (char ch) |
static auto | validatePosixRule (const QByteArray &posixRule, bool requireOffset=false) |
static QList< QTimeZonePrivate::Data > | calculatePosixTransitions (const QByteArray &posixRule, int startYear, int endYear, qint64 lastTranMSecs) |
#define TZ_MAGIC "TZif" |
Definition at line 148 of file qtimezoneprivate_tz.cpp.
Referenced by isTzFile(), and parseTzHeader().
#define TZ_MAX_CHARS 50 |
Definition at line 151 of file qtimezoneprivate_tz.cpp.
Referenced by parseTzHeader().
#define TZ_MAX_LEAPS 50 |
Definition at line 152 of file qtimezoneprivate_tz.cpp.
Referenced by parseTzHeader().
#define TZ_MAX_TIMES 1200 |
Definition at line 149 of file qtimezoneprivate_tz.cpp.
Referenced by parseTzHeader().
#define TZ_MAX_TYPES 256 |
Definition at line 150 of file qtimezoneprivate_tz.cpp.
Referenced by parseTzHeader().
typedef QHash<QByteArray, QTzTimeZone> QTzTimeZoneHash |
Definition at line 48 of file qtimezoneprivate_tz.cpp.
|
inlinestatic |
Definition at line 505 of file qtimezoneprivate_tz.cpp.
References ch.
|
static |
Definition at line 387 of file qtimezoneprivate_tz.cpp.
References QDate::addDays(), date, QDate::dayOfWeek(), and QDate::month().
Referenced by calculatePosixDate().
|
static |
Definition at line 406 of file qtimezoneprivate_tz.cpp.
References QDate::addDays(), QByteArrayView::at(), calculateDowDate(), QDate::isLeapYear(), ok, Q_ASSERT, and QByteArrayView::sliced().
Referenced by calculatePosixTransitions(), and validatePosixRule().
|
static |
Definition at line 640 of file qtimezoneprivate_tz.cpp.
References QByteArray::at(), begin(), calculatePosixDate(), QDateTime::First, QString::fromUtf8(), QDateTime::Last, parsePosixTransitionTime(), Q_ASSERT, qBound(), and QTimeZone::UTC.
|
static |
Definition at line 179 of file qtimezoneprivate_tz.cpp.
References file, QFile::open(), QIODevice::read(), QIODeviceBase::ReadOnly, and TZ_MAGIC.
Referenced by loadTzTimeZones().
|
static |
Definition at line 83 of file qtimezoneprivate_tz.cpp.
References QString::at(), QLocalePrivate::codeToTerritory(), cut(), QFile::encodeName(), QString::first(), QString::fromUtf8(), QString::indexOf(), info, QString::insert(), QString::isEmpty(), isTzFile(), line, openZoneInfo(), Q_ASSERT, Q_LIKELY, QDirListing::Recursive, QString::sliced(), QTzTimeZone::territory, text, and QString::trimmed().
Definition at line 53 of file qtimezoneprivate_tz.cpp.
References file, QFile::open(), qEnvironmentVariable(), QIODeviceBase::ReadOnly, and QFile::setFileName().
Referenced by loadTzTimeZones().
|
static |
Definition at line 487 of file qtimezoneprivate_tz.cpp.
References begin(), and parsePosixTime().
|
static |
Definition at line 444 of file qtimezoneprivate_tz.cpp.
References begin(), and qstrntoll().
Referenced by parsePosixOffset(), parsePosixTransitionTime(), and validatePosixRule().
|
static |
Definition at line 482 of file qtimezoneprivate_tz.cpp.
References parsePosixTime().
Referenced by calculatePosixTransitions().
|
static |
Definition at line 286 of file qtimezoneprivate_tz.cpp.
References QByteArray::append(), ch, i, map, and QDataStream::status().
|
static |
Definition at line 187 of file qtimezoneprivate_tz.cpp.
References ch, ok, QDataStream::readRawData(), QDataStream::status(), TZ_MAGIC, TZ_MAX_CHARS, TZ_MAX_LEAPS, TZ_MAX_TIMES, TZ_MAX_TYPES, QTzHeader::tzh_charcnt, QTzHeader::tzh_leapcnt, QTzHeader::tzh_magic, QTzHeader::tzh_reserved, QTzHeader::tzh_timecnt, QTzHeader::tzh_ttisgmtcnt, QTzHeader::tzh_ttisstdcnt, QTzHeader::tzh_typecnt, and QTzHeader::tzh_version.
|
static |
Definition at line 342 of file qtimezoneprivate_tz.cpp.
References i, and QDataStream::status().
|
static |
Definition at line 315 of file qtimezoneprivate_tz.cpp.
References i, QDataStream::status(), and time.
|
static |
Definition at line 369 of file qtimezoneprivate_tz.cpp.
References ch, rule, and QDataStream::status().
|
static |
Definition at line 231 of file qtimezoneprivate_tz.cpp.
References i, and QDataStream::status().
|
static |
Definition at line 264 of file qtimezoneprivate_tz.cpp.
References i, and QDataStream::status().
Q_DECLARE_TYPEINFO | ( | QTzTransition | , |
Q_PRIMITIVE_TYPE | ) |
Q_DECLARE_TYPEINFO | ( | QTzType | , |
Q_PRIMITIVE_TYPE | ) |
Q_GLOBAL_STATIC | ( | const QTzTimeZoneHash | , |
tzZones | , | ||
loadTzTimeZones() | ) |
|
static |
Definition at line 592 of file qtimezoneprivate_tz.cpp.
References QByteArray::at(), begin(), calculatePosixDate(), i, parsePosixTime(), and time.