![]() |
Qt 6.x
The Qt SDK
|
#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/QDirIterator>
#include <QtCore/QFile>
#include <QtCore/QCache>
#include <QtCore/QMap>
#include <QtCore/QMutex>
#include <qdebug.h>
#include <qplatformdefs.h>
#include <algorithm>
#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 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 127 of file qtimezoneprivate_tz.cpp.
#define TZ_MAX_CHARS 50 |
Definition at line 130 of file qtimezoneprivate_tz.cpp.
#define TZ_MAX_LEAPS 50 |
Definition at line 131 of file qtimezoneprivate_tz.cpp.
#define TZ_MAX_TIMES 1200 |
Definition at line 128 of file qtimezoneprivate_tz.cpp.
#define TZ_MAX_TYPES 256 |
Definition at line 129 of file qtimezoneprivate_tz.cpp.
typedef QHash<QByteArray, QTzTimeZone> QTzTimeZoneHash |
Definition at line 50 of file qtimezoneprivate_tz.cpp.
|
inlinestatic |
Definition at line 484 of file qtimezoneprivate_tz.cpp.
References ch.
|
static |
Definition at line 366 of file qtimezoneprivate_tz.cpp.
References QDate::addDays(), date, QDate::dayOfWeek(), and QDate::month().
Referenced by calculatePosixDate().
|
static |
Definition at line 385 of file qtimezoneprivate_tz.cpp.
References QDate::addDays(), QByteArray::at(), QList< T >::at(), calculateDowDate(), QByteArray::isEmpty(), QDate::isLeapYear(), ok, Q_ASSERT, QList< T >::size(), QByteArray::sliced(), QByteArray::split(), and QByteArray::toInt().
Referenced by calculatePosixTransitions(), and validatePosixRule().
|
static |
Definition at line 611 of file qtimezoneprivate_tz.cpp.
References QTimeZonePrivate::Data::abbreviation, QByteArray::at(), QList< T >::at(), QTimeZonePrivate::Data::atMSecsSinceEpoch, begin(), calculatePosixDate(), QByteArray::constBegin(), QByteArray::constEnd(), QTimeZonePrivate::Data::daylightTimeOffset, QDateTime::First, QString::fromUtf8(), QByteArray::isEmpty(), QDateTime::Last, QTimeZonePrivate::Data::offsetFromUtc, parsePosixTransitionTime(), Q_ASSERT, qBound(), QList< T >::size(), QByteArray::split(), QTimeZonePrivate::Data::standardTimeOffset, and QTimeZone::UTC.
|
static |
Definition at line 158 of file qtimezoneprivate_tz.cpp.
References file, QFile::open(), QIODevice::read(), QIODeviceBase::ReadOnly, and TZ_MAGIC.
Referenced by loadTzTimeZones().
|
static |
Definition at line 57 of file qtimezoneprivate_tz.cpp.
References QDir::absoluteFilePath(), QString::at(), QFileDevice::atEnd(), QLocalePrivate::codeToTerritory(), QTzTimeZone::comment, QHash< Key, T >::contains(), cut(), QFile::encodeName(), QFile::exists(), QFileInfo::filePath(), QString::first(), QString::fromUtf8(), QDirIterator::hasNext(), QString::indexOf(), info, QHash< Key, T >::insert(), QFileInfo::isDir(), QString::isEmpty(), QFileInfo::isFile(), QFileInfo::isSymLink(), isTzFile(), line, QDirIterator::nextFileInfo(), QFile::open(), Q_ASSERT, Q_LIKELY, QStringLiteral, QIODevice::readLine(), QIODeviceBase::ReadOnly, QDir::relativeFilePath(), QString::sliced(), QDirIterator::Subdirectories, QTzTimeZone::territory, and text.
|
static |
Definition at line 466 of file qtimezoneprivate_tz.cpp.
References begin(), and parsePosixTime().
|
static |
Definition at line 423 of file qtimezoneprivate_tz.cpp.
References begin(), and qstrntoll().
Referenced by parsePosixOffset(), parsePosixTransitionTime(), and validatePosixRule().
|
static |
Definition at line 461 of file qtimezoneprivate_tz.cpp.
References QByteArray::constBegin(), QByteArray::constEnd(), and parsePosixTime().
Referenced by calculatePosixTransitions().
|
static |
Definition at line 265 of file qtimezoneprivate_tz.cpp.
References QByteArray::append(), ch, i, map, QDataStream::Ok, and QDataStream::status().
|
static |
Definition at line 166 of file qtimezoneprivate_tz.cpp.
References ch, ok, QDataStream::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 321 of file qtimezoneprivate_tz.cpp.
References i, QDataStream::Ok, and QDataStream::status().
|
static |
Definition at line 294 of file qtimezoneprivate_tz.cpp.
References i, QDataStream::Ok, QDataStream::status(), and time.
|
static |
Definition at line 348 of file qtimezoneprivate_tz.cpp.
References ch, QDataStream::Ok, rule, and QDataStream::status().
|
static |
Definition at line 210 of file qtimezoneprivate_tz.cpp.
References i, QDataStream::Ok, QList< T >::resize(), and QDataStream::status().
|
static |
Definition at line 243 of file qtimezoneprivate_tz.cpp.
References i, QDataStream::Ok, 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 563 of file qtimezoneprivate_tz.cpp.
References QByteArray::at(), QByteArray::begin(), begin(), calculatePosixDate(), QByteArray::end(), i, QByteArray::isEmpty(), QDate::isValid(), parsePosixTime(), QList< T >::size(), QByteArray::split(), and time.