TZ-Lib  $VERSION$
include/tzfile.h
Go to the documentation of this file.
1 //
2 // C++ Interface: TZ file loader
3 //
4 // Description: internal interface to time zones
5 //
6 //
7 // Author: Konrad Rosenbaum <konrad@silmor.de>, (C) 2008
8 //
9 // Copyright: See README/COPYING files that come with this distribution
10 //
11 //
12 
13 
14 #ifndef TZFILE_H
15 #define TZFILE_H
16 
17 #include <QStringList>
18 
19 class QByteArray;
20 class QIODevice;
21 
22 
23 #if defined(TZ_LIBRARY_BUILD)
24 # define TZLIB_EXPORT Q_DECL_EXPORT
25 #else
26 # define TZLIB_EXPORT Q_DECL_IMPORT
27 #endif
28 
29 
30 namespace TimeZoneLib {
31 
34 {
35  public:
37  TZRule();
39  TZRule(const TZRule&);
40 
42  TZRule& operator=(const TZRule&);
43 
45  qint64 startTime()const{return m_start;}
47  qint64 endTime()const{return m_end;}
49  QString abbreviation()const{return m_abbr;}
51  bool isDST()const{return m_isdst;}
53  qint32 offsetFromUTC()const{return m_off;}
54 
56  bool matches(qint64 ts)const{return m_start<=ts && m_end>ts;}
57 
59  bool matchesLocal(qint64 ts)const{return matches(ts-m_off);}
60 
62  bool operator<(const TZRule&r)const{return m_start<r.m_start;}
64  bool operator<=(const TZRule&r)const{return m_start<=r.m_start;}
65 
66  private:
67  friend class TZFile;
68  friend class PosixRule;
70  TZRule(qint64 start,qint32 off,QString abbr,bool isdst);
72  void setEnd(qint64 e){m_end=e;}
73 
74  qint64 m_start,m_end;
75  qint32 m_off;
76  QString m_abbr;
77  bool m_isdst;
78 };
79 
82 {
83  public:
85  PosixRule();
87  PosixRule(const PosixRule&);
89  PosixRule(QString);
90 
92  PosixRule& operator=(const PosixRule&);
93 
95  QString asString()const{return m_str;}
96 
98  QList<TZRule> rulesForYear(int)const;
99 
101  TZRule nextRule(const TZRule&)const;
102 
104  TZRule ruleForTime(qint64)const;
105 
107  TZRule ruleForLocalTime(qint64)const;
108 
110  enum StartType{
118  StartWeek
119  };
120 
122  QString standardName()const{return m_abbr;}
123 
125  QString daylightName()const{return m_abbrdst;}
126 
128  qint32 standardOffset()const{return m_off;}
129 
131  qint32 daylightOffset()const{return m_offdst;}
132 
134  bool haveDST()const{return m_abbr!=m_abbrdst;}
135 
136  private:
137 
138  QString m_str,m_abbr,m_abbrdst;
139  qint32 m_off,m_offdst;
140  StartType m_types,m_typee;
141  qint32 m_months,m_weeks,m_days,m_times;
142  qint32 m_monthe,m_weeke,m_daye,m_timee;
143 
145  TZRule createRule(qint32 year,bool start)const;
146 };
147 
150 {
151  public:
153  TZFile();
155  TZFile(QString tz);
157  TZFile(const char* tz);
159  TZFile(QIODevice&);
161  TZFile(const QByteArray&);
163  TZFile(const TZFile&);
165  TZFile(int offset);
166 
167  TZFile& operator=(const TZFile&);
168 
170  bool isValid()const{return m_valid;}
171 
173  QString name()const{return m_name;}
174 
176  void setName(QString n){m_name=n;}
177 
179  TZRule ruleForTime(qint64);
180 
182  TZRule ruleForLocalTime(qint64);
183 
185  QList<TZRule> fileRules()const{return m_file;}
186 
188  PosixRule posixRule()const{return m_posix;}
189 
191  QList<TZRule> cachedRules()const{return m_cache;}
192 
194  QString fileName()const{return m_fname;}
195 
197  QString dirName()const;
198 
200  QString version()const;
201 
203  static QString builtinVersion();
204 
206  static QString libraryVersion();
207 
209  static QStringList searchPath();
211  static void setSearchPath(const QStringList&);
212  private:
214  void strConstruct(QString);
216  bool load(const QByteArray&);
218  int load(const QByteArray&,char);
219 
220  bool m_valid;
221  QList<TZRule>m_file;
222  QList<TZRule>m_cache;
223  PosixRule m_posix;
224  QString m_name,m_fname;
225 
226  static QStringList m_search;
227 };
228 
229 //end of namespace
230 };
231 
232 #endif
Definition: tzdata.h:29
Definition: include/tzfile.h:114
QString standardName() const
Definition: include/tzfile.h:122
bool operator<=(const TZRule &r) const
Definition: include/tzfile.h:64
Definition: include/tzfile.h:112
bool isDST() const
Definition: include/tzfile.h:51
qint64 endTime() const
Definition: include/tzfile.h:47
bool matches(qint64 ts) const
Definition: include/tzfile.h:56
qint32 daylightOffset() const
Definition: include/tzfile.h:131
Definition: include/tzfile.h:33
bool isValid() const
Definition: include/tzfile.h:170
QString daylightName() const
Definition: include/tzfile.h:125
#define TZLIB_EXPORT
Definition: include/tzfile.h:26
qint32 offsetFromUTC() const
Definition: include/tzfile.h:53
Definition: include/tzfile.h:81
void setName(QString n)
Definition: include/tzfile.h:176
QString fileName() const
returns the full file name of the zone file, if known
Definition: include/tzfile.h:194
Definition: include/tzfile.h:116
static char const * abbr(struct tm const *)
Definition: zdump.c:1175
QList< TZRule > fileRules() const
Definition: include/tzfile.h:185
QString asString() const
Definition: include/tzfile.h:95
QString name() const
Definition: include/tzfile.h:173
bool matchesLocal(qint64 ts) const
Definition: include/tzfile.h:59
bool haveDST() const
Definition: include/tzfile.h:134
PosixRule posixRule() const
Definition: include/tzfile.h:188
qint64 startTime() const
Definition: include/tzfile.h:45
Definition: include/tzfile.h:149
QString abbreviation() const
Definition: include/tzfile.h:49
StartType
Definition: include/tzfile.h:110
qint32 standardOffset() const
Definition: include/tzfile.h:128
QList< TZRule > cachedRules() const
Definition: include/tzfile.h:191
bool operator<(const TZRule &r) const
Definition: include/tzfile.h:62