ICU 4.2.1
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
vtzone.h
Go to the documentation of this file.
1 /*
2 *******************************************************************************
3 * Copyright (C) 2007-2009, International Business Machines Corporation and *
4 * others. All Rights Reserved. *
5 *******************************************************************************
6 */
7 #ifndef VTZONE_H
8 #define VTZONE_H
9 
10 #include "unicode/utypes.h"
11 
17 #if !UCONFIG_NO_FORMATTING
18 
19 #include "unicode/basictz.h"
20 
22 
23 class VTZWriter;
24 class VTZReader;
25 class UVector;
26 
40 public:
46  VTimeZone(const VTimeZone& source);
47 
52  virtual ~VTimeZone();
53 
59  VTimeZone& operator=(const VTimeZone& right);
60 
69  virtual UBool operator==(const TimeZone& that) const;
70 
79  virtual UBool operator!=(const TimeZone& that) const;
80 
88  static VTimeZone* createVTimeZoneByID(const UnicodeString& ID);
89 
99  static VTimeZone* createVTimeZone(const UnicodeString& vtzdata, UErrorCode& status);
100 
109  UBool getTZURL(UnicodeString& url) const;
110 
116  void setTZURL(const UnicodeString& url);
117 
126  UBool getLastModified(UDate& lastModified) const;
127 
133  void setLastModified(UDate lastModified);
134 
141  void write(UnicodeString& result, UErrorCode& status) const;
142 
151  void write(UDate start, UnicodeString& result, UErrorCode& status) /*const*/;
152 
166  void writeSimple(UDate time, UnicodeString& result, UErrorCode& status) /*const*/;
167 
174  virtual TimeZone* clone(void) const;
175 
200  virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day,
201  uint8_t dayOfWeek, int32_t millis, UErrorCode& status) const;
202 
222  virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day,
223  uint8_t dayOfWeek, int32_t millis,
224  int32_t monthLength, UErrorCode& status) const;
225 
248  virtual void getOffset(UDate date, UBool local, int32_t& rawOffset,
249  int32_t& dstOffset, UErrorCode& ec) const;
250 
258  virtual void setRawOffset(int32_t offsetMillis);
259 
267  virtual int32_t getRawOffset(void) const;
268 
275  virtual UBool useDaylightTime(void) const;
276 
290  virtual UBool inDaylightTime(UDate date, UErrorCode& status) const;
291 
300  virtual UBool hasSameRules(const TimeZone& other) const;
301 
310  virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) /*const*/;
311 
320  virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) /*const*/;
321 
330  virtual int32_t countTransitionRules(UErrorCode& status) /*const*/;
331 
348  virtual void getTimeZoneRules(const InitialTimeZoneRule*& initial,
349  const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) /*const*/;
350 
351 private:
352  enum { DEFAULT_VTIMEZONE_LINES = 100 };
353 
357  VTimeZone();
358  static VTimeZone* createVTimeZone(VTZReader* reader);
359  void write(VTZWriter& writer, UErrorCode& status) const;
360  void write(UDate start, VTZWriter& writer, UErrorCode& status) /*const*/;
361  void writeSimple(UDate time, VTZWriter& writer, UErrorCode& status) /*const*/;
362  void load(VTZReader& reader, UErrorCode& status);
363  void parse(UErrorCode& status);
364 
365  void writeZone(VTZWriter& w, BasicTimeZone& basictz, UVector* customProps,
366  UErrorCode& status) const;
367 
368  void writeHeaders(VTZWriter& w, UErrorCode& status) const;
369  void writeFooter(VTZWriter& writer, UErrorCode& status) const;
370 
371  void writeZonePropsByTime(VTZWriter& writer, UBool isDst, const UnicodeString& zonename,
372  int32_t fromOffset, int32_t toOffset, UDate time, UBool withRDATE,
373  UErrorCode& status) const;
374  void writeZonePropsByDOM(VTZWriter& writer, UBool isDst, const UnicodeString& zonename,
375  int32_t fromOffset, int32_t toOffset,
376  int32_t month, int32_t dayOfMonth, UDate startTime, UDate untilTime,
377  UErrorCode& status) const;
378  void writeZonePropsByDOW(VTZWriter& writer, UBool isDst, const UnicodeString& zonename,
379  int32_t fromOffset, int32_t toOffset,
380  int32_t month, int32_t weekInMonth, int32_t dayOfWeek,
381  UDate startTime, UDate untilTime, UErrorCode& status) const;
382  void writeZonePropsByDOW_GEQ_DOM(VTZWriter& writer, UBool isDst, const UnicodeString& zonename,
383  int32_t fromOffset, int32_t toOffset,
384  int32_t month, int32_t dayOfMonth, int32_t dayOfWeek,
385  UDate startTime, UDate untilTime, UErrorCode& status) const;
386  void writeZonePropsByDOW_GEQ_DOM_sub(VTZWriter& writer, int32_t month, int32_t dayOfMonth,
387  int32_t dayOfWeek, int32_t numDays,
388  UDate untilTime, int32_t fromOffset, UErrorCode& status) const;
389  void writeZonePropsByDOW_LEQ_DOM(VTZWriter& writer, UBool isDst, const UnicodeString& zonename,
390  int32_t fromOffset, int32_t toOffset,
391  int32_t month, int32_t dayOfMonth, int32_t dayOfWeek,
392  UDate startTime, UDate untilTime, UErrorCode& status) const;
393  void writeFinalRule(VTZWriter& writer, UBool isDst, const AnnualTimeZoneRule* rule,
394  int32_t fromRawOffset, int32_t fromDSTSavings,
395  UDate startTime, UErrorCode& status) const;
396 
397  void beginZoneProps(VTZWriter& writer, UBool isDst, const UnicodeString& zonename,
398  int32_t fromOffset, int32_t toOffset, UDate startTime, UErrorCode& status) const;
399  void endZoneProps(VTZWriter& writer, UBool isDst, UErrorCode& status) const;
400  void beginRRULE(VTZWriter& writer, int32_t month, UErrorCode& status) const;
401  void appendUNTIL(VTZWriter& writer, const UnicodeString& until, UErrorCode& status) const;
402 
403  BasicTimeZone *tz;
404  UVector *vtzlines;
405  UnicodeString tzurl;
406  UDate lastmod;
407  UnicodeString olsonzid;
408  UnicodeString icutzver;
409 
410 public:
422  static UClassID U_EXPORT2 getStaticClassID(void);
423 
435  virtual UClassID getDynamicClassID(void) const;
436 };
437 
439 
440 #endif /* #if !UCONFIG_NO_FORMATTING */
441 
442 #endif // VTZONE_H
443 //eof
virtual void setRawOffset(int32_t offsetMillis)=0
Sets the TimeZone's raw GMT offset (i.e., the number of milliseconds to add to GMT to get local time...
virtual void getTimeZoneRules(const InitialTimeZoneRule *&initial, const TimeZoneRule *trsrules[], int32_t &trscount, UErrorCode &status)=0
Gets the InitialTimeZoneRule and the set of TimeZoneRule which represent time transitions for this ti...
double UDate
Date and Time data type.
Definition: utypes.h:281
UBool operator!=(const TimeZone &that) const
Returns true if the two TimeZones are NOT equal; that is, if operator==() returns false...
Definition: timezone.h:389
TimeZoneRule is a class representing a rule for time zone.
Definition: tzrule.h:32
unsigned char uint8_t
Define 64 bit limits.
Definition: pwin32.h:131
C++ API: ICU TimeZone base class.
TimeZoneTransition is a class representing a time zone transition.
Definition: tztrans.h:31
TimeZone & operator=(const TimeZone &right)
Default assignment operator.
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside...
Definition: utypes.h:475
virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition &result)=0
Gets the first time zone transition after the base time.
virtual UClassID getDynamicClassID(void) const =0
Returns a unique class ID POLYMORPHICALLY.
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.
Definition: uversion.h:183
static UClassID getStaticClassID(void)
Return the class ID for this class.
InitialTimeZoneRule represents a time zone rule representing a time zone effective from the beginning...
Definition: tzrule.h:198
virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, uint8_t dayOfWeek, int32_t millis, UErrorCode &status) const =0
Returns the TimeZone's adjusted GMT offset (i.e., the number of milliseconds to add to GMT to get loc...
BasicTimeZone is an abstract class extending TimeZone.
Definition: basictz.h:34
virtual TimeZone * clone(void) const =0
Clones TimeZone objects polymorphically.
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition: unistr.h:187
#define U_EXPORT2
Definition: platform.h:338
virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition &result)=0
Gets the most recent time zone transition before the base time.
VTimeZone is a class implementing RFC2445 VTIMEZONE.
Definition: vtzone.h:39
AnnualTimeZoneRule is a class used for representing a time zone rule which takes effect annually...
Definition: tzrule.h:376
virtual UBool hasSameRules(const TimeZone &other) const
Returns true if this zone has the same rule and offset as another zone.
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API If the compiler doesn't support namespaces...
Definition: uversion.h:184
virtual int32_t getRawOffset(void) const =0
Returns the TimeZone's raw GMT offset (i.e., the number of milliseconds to add to GMT to get local ti...
void * UClassID
UClassID is used to identify classes without using RTTI, since RTTI is not yet supported by all C++ c...
Definition: utypes.h:339
UErrorCode
Error code to replace exception handling, so that the code is compatible with all C++ compilers...
Definition: utypes.h:593
TimeZone represents a time zone offset, and also figures out daylight savings.
Definition: timezone.h:122
Basic definitions for ICU, for both C and C++ APIs.
virtual int32_t countTransitionRules(UErrorCode &status)=0
Returns the number of TimeZoneRules which represents time transitions, for this time zone...
virtual UBool inDaylightTime(UDate date, UErrorCode &status) const =0
Queries if the given date is in daylight savings time in this time zone.
virtual UBool operator==(const TimeZone &that) const
Returns true if the two TimeZones are equal.
virtual UBool useDaylightTime(void) const =0
Queries if this time zone uses daylight savings time.
signed int int32_t
Define 64 bit limits.
Definition: pwin32.h:143
int8_t UBool
The ICU boolean type.
Definition: umachine.h:208