Qt 6.x
The Qt SDK
Loading...
Searching...
No Matches
qtimezoneprivate_tz.cpp File Reference
#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>
+ Include dependency graph for qtimezoneprivate_tz.cpp:

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, QTzTimeZoneQTzTimeZoneHash
 

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< QTzTransitionparseTzTransitions (QDataStream &ds, int tzh_timecnt, bool longTran)
 
static QList< QTzTypeparseTzTypes (QDataStream &ds, int tzh_typecnt)
 
static QMap< int, QByteArrayparseTzAbbreviations (QDataStream &ds, int tzh_charcnt, const QList< QTzType > &types)
 
static void parseTzLeapSeconds (QDataStream &ds, int tzh_leapcnt, bool longTran)
 
static QList< QTzTypeparseTzIndicators (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::DatacalculatePosixTransitions (const QByteArray &posixRule, int startYear, int endYear, qint64 lastTranMSecs)
 

Macro Definition Documentation

◆ TZ_MAGIC

#define TZ_MAGIC   "TZif"

Definition at line 127 of file qtimezoneprivate_tz.cpp.

◆ TZ_MAX_CHARS

#define TZ_MAX_CHARS   50

Definition at line 130 of file qtimezoneprivate_tz.cpp.

◆ TZ_MAX_LEAPS

#define TZ_MAX_LEAPS   50

Definition at line 131 of file qtimezoneprivate_tz.cpp.

◆ TZ_MAX_TIMES

#define TZ_MAX_TIMES   1200

Definition at line 128 of file qtimezoneprivate_tz.cpp.

◆ TZ_MAX_TYPES

#define TZ_MAX_TYPES   256

Definition at line 129 of file qtimezoneprivate_tz.cpp.

Typedef Documentation

◆ QTzTimeZoneHash

Definition at line 50 of file qtimezoneprivate_tz.cpp.

Function Documentation

◆ asciiIsLetter()

static bool asciiIsLetter ( char  ch)
inlinestatic

Definition at line 484 of file qtimezoneprivate_tz.cpp.

References ch.

◆ calculateDowDate()

static QDate calculateDowDate ( int  year,
int  month,
int  dayOfWeek,
int  week 
)
static

Definition at line 366 of file qtimezoneprivate_tz.cpp.

References QDate::addDays(), date, QDate::dayOfWeek(), and QDate::month().

Referenced by calculatePosixDate().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ calculatePosixDate()

static QDate calculatePosixDate ( const QByteArray dateRule,
int  year 
)
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().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ calculatePosixTransitions()

◆ isTzFile()

static bool isTzFile ( const QString name)
static

Definition at line 158 of file qtimezoneprivate_tz.cpp.

References file, QFile::open(), QIODevice::read(), QIODeviceBase::ReadOnly, and TZ_MAGIC.

Referenced by loadTzTimeZones().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ loadTzTimeZones()

◆ parsePosixOffset()

static int parsePosixOffset ( const char *  begin,
const char *  end 
)
static

Definition at line 466 of file qtimezoneprivate_tz.cpp.

References begin(), and parsePosixTime().

+ Here is the call graph for this function:

◆ parsePosixTime()

static int parsePosixTime ( const char *  begin,
const char *  end 
)
static

Definition at line 423 of file qtimezoneprivate_tz.cpp.

References begin(), and qstrntoll().

Referenced by parsePosixOffset(), parsePosixTransitionTime(), and validatePosixRule().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ parsePosixTransitionTime()

static int parsePosixTransitionTime ( const QByteArray timeRule)
static

Definition at line 461 of file qtimezoneprivate_tz.cpp.

References QByteArray::constBegin(), QByteArray::constEnd(), and parsePosixTime().

Referenced by calculatePosixTransitions().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ parseTzAbbreviations()

static QMap< int, QByteArray > parseTzAbbreviations ( QDataStream ds,
int  tzh_charcnt,
const QList< QTzType > &  types 
)
static

Definition at line 265 of file qtimezoneprivate_tz.cpp.

References QByteArray::append(), ch, i, map, QDataStream::Ok, and QDataStream::status().

+ Here is the call graph for this function:

◆ parseTzHeader()

static QTzHeader parseTzHeader ( QDataStream ds,
bool *  ok 
)
static

◆ parseTzIndicators()

static QList< QTzType > parseTzIndicators ( QDataStream ds,
const QList< QTzType > &  types,
int  tzh_ttisstdcnt,
int  tzh_ttisgmtcnt 
)
static

Definition at line 321 of file qtimezoneprivate_tz.cpp.

References i, QDataStream::Ok, and QDataStream::status().

+ Here is the call graph for this function:

◆ parseTzLeapSeconds()

static void parseTzLeapSeconds ( QDataStream ds,
int  tzh_leapcnt,
bool  longTran 
)
static

Definition at line 294 of file qtimezoneprivate_tz.cpp.

References i, QDataStream::Ok, QDataStream::status(), and time.

+ Here is the call graph for this function:

◆ parseTzPosixRule()

static QByteArray parseTzPosixRule ( QDataStream ds)
static

Definition at line 348 of file qtimezoneprivate_tz.cpp.

References ch, QDataStream::Ok, rule, and QDataStream::status().

+ Here is the call graph for this function:

◆ parseTzTransitions()

static QList< QTzTransition > parseTzTransitions ( QDataStream ds,
int  tzh_timecnt,
bool  longTran 
)
static

Definition at line 210 of file qtimezoneprivate_tz.cpp.

References i, QDataStream::Ok, QList< T >::resize(), and QDataStream::status().

+ Here is the call graph for this function:

◆ parseTzTypes()

static QList< QTzType > parseTzTypes ( QDataStream ds,
int  tzh_typecnt 
)
static

Definition at line 243 of file qtimezoneprivate_tz.cpp.

References i, QDataStream::Ok, and QDataStream::status().

+ Here is the call graph for this function:

◆ Q_DECLARE_TYPEINFO() [1/2]

Q_DECLARE_TYPEINFO ( QTzTransition  ,
Q_PRIMITIVE_TYPE   
)

◆ Q_DECLARE_TYPEINFO() [2/2]

Q_DECLARE_TYPEINFO ( QTzType  ,
Q_PRIMITIVE_TYPE   
)

◆ Q_GLOBAL_STATIC()

Q_GLOBAL_STATIC ( const QTzTimeZoneHash  ,
tzZones  ,
loadTzTimeZones()   
)

◆ validatePosixRule()

static auto validatePosixRule ( const QByteArray posixRule,
bool  requireOffset = false 
)
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.

+ Here is the call graph for this function: