|
ICU 73.2
73.2
|
00001 // © 2016 and later: Unicode, Inc. and others. 00002 // License & terms of use: http://www.unicode.org/copyright.html 00003 /* 00004 ******************************************************************************* 00005 * Copyright (C) 2007-2013, International Business Machines Corporation and 00006 * others. All Rights Reserved. 00007 ******************************************************************************* 00008 */ 00009 #ifndef VTZONE_H 00010 #define VTZONE_H 00011 00012 #include "unicode/utypes.h" 00013 00014 #if U_SHOW_CPLUSPLUS_API 00015 00021 #if !UCONFIG_NO_FORMATTING 00022 00023 #include "unicode/basictz.h" 00024 00025 U_NAMESPACE_BEGIN 00026 00027 class VTZWriter; 00028 class VTZReader; 00029 class UVector; 00030 00045 class U_I18N_API VTimeZone : public BasicTimeZone { 00046 public: 00052 VTimeZone(const VTimeZone& source); 00053 00058 virtual ~VTimeZone(); 00059 00065 VTimeZone& operator=(const VTimeZone& right); 00066 00075 virtual bool operator==(const TimeZone& that) const override; 00076 00085 virtual bool operator!=(const TimeZone& that) const; 00086 00094 static VTimeZone* createVTimeZoneByID(const UnicodeString& ID); 00095 00103 static VTimeZone* createVTimeZoneFromBasicTimeZone(const BasicTimeZone& basicTZ, 00104 UErrorCode &status); 00105 00115 static VTimeZone* createVTimeZone(const UnicodeString& vtzdata, UErrorCode& status); 00116 00125 UBool getTZURL(UnicodeString& url) const; 00126 00132 void setTZURL(const UnicodeString& url); 00133 00142 UBool getLastModified(UDate& lastModified) const; 00143 00149 void setLastModified(UDate lastModified); 00150 00157 void write(UnicodeString& result, UErrorCode& status) const; 00158 00167 void write(UDate start, UnicodeString& result, UErrorCode& status) const; 00168 00182 void writeSimple(UDate time, UnicodeString& result, UErrorCode& status) const; 00183 00190 virtual VTimeZone* clone() const override; 00191 00216 virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, 00217 uint8_t dayOfWeek, int32_t millis, UErrorCode& status) const override; 00218 00238 virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, 00239 uint8_t dayOfWeek, int32_t millis, 00240 int32_t monthLength, UErrorCode& status) const override; 00241 00264 virtual void getOffset(UDate date, UBool local, int32_t& rawOffset, 00265 int32_t& dstOffset, UErrorCode& ec) const override; 00266 00271 virtual void getOffsetFromLocal( 00272 UDate date, UTimeZoneLocalOption nonExistingTimeOpt, 00273 UTimeZoneLocalOption duplicatedTimeOpt, 00274 int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const override; 00275 00283 virtual void setRawOffset(int32_t offsetMillis) override; 00284 00292 virtual int32_t getRawOffset(void) const override; 00293 00300 virtual UBool useDaylightTime(void) const override; 00301 00302 #ifndef U_FORCE_HIDE_DEPRECATED_API 00303 00316 virtual UBool inDaylightTime(UDate date, UErrorCode& status) const override; 00317 #endif // U_FORCE_HIDE_DEPRECATED_API 00318 00327 virtual UBool hasSameRules(const TimeZone& other) const override; 00328 00337 virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const override; 00338 00347 virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const override; 00348 00357 virtual int32_t countTransitionRules(UErrorCode& status) const override; 00358 00375 virtual void getTimeZoneRules(const InitialTimeZoneRule*& initial, 00376 const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) const override; 00377 00378 private: 00379 enum { DEFAULT_VTIMEZONE_LINES = 100 }; 00380 00384 VTimeZone(); 00385 void write(VTZWriter& writer, UErrorCode& status) const; 00386 void write(UDate start, VTZWriter& writer, UErrorCode& status) const; 00387 void writeSimple(UDate time, VTZWriter& writer, UErrorCode& status) const; 00388 void load(VTZReader& reader, UErrorCode& status); 00389 void parse(UErrorCode& status); 00390 00391 void writeZone(VTZWriter& w, BasicTimeZone& basictz, UVector* customProps, 00392 UErrorCode& status) const; 00393 00394 void writeHeaders(VTZWriter& w, UErrorCode& status) const; 00395 void writeFooter(VTZWriter& writer, UErrorCode& status) const; 00396 00397 void writeZonePropsByTime(VTZWriter& writer, UBool isDst, const UnicodeString& zonename, 00398 int32_t fromOffset, int32_t toOffset, UDate time, UBool withRDATE, 00399 UErrorCode& status) const; 00400 void writeZonePropsByDOM(VTZWriter& writer, UBool isDst, const UnicodeString& zonename, 00401 int32_t fromOffset, int32_t toOffset, 00402 int32_t month, int32_t dayOfMonth, UDate startTime, UDate untilTime, 00403 UErrorCode& status) const; 00404 void writeZonePropsByDOW(VTZWriter& writer, UBool isDst, const UnicodeString& zonename, 00405 int32_t fromOffset, int32_t toOffset, 00406 int32_t month, int32_t weekInMonth, int32_t dayOfWeek, 00407 UDate startTime, UDate untilTime, UErrorCode& status) const; 00408 void writeZonePropsByDOW_GEQ_DOM(VTZWriter& writer, UBool isDst, const UnicodeString& zonename, 00409 int32_t fromOffset, int32_t toOffset, 00410 int32_t month, int32_t dayOfMonth, int32_t dayOfWeek, 00411 UDate startTime, UDate untilTime, UErrorCode& status) const; 00412 void writeZonePropsByDOW_GEQ_DOM_sub(VTZWriter& writer, int32_t month, int32_t dayOfMonth, 00413 int32_t dayOfWeek, int32_t numDays, 00414 UDate untilTime, int32_t fromOffset, UErrorCode& status) const; 00415 void writeZonePropsByDOW_LEQ_DOM(VTZWriter& writer, UBool isDst, const UnicodeString& zonename, 00416 int32_t fromOffset, int32_t toOffset, 00417 int32_t month, int32_t dayOfMonth, int32_t dayOfWeek, 00418 UDate startTime, UDate untilTime, UErrorCode& status) const; 00419 void writeFinalRule(VTZWriter& writer, UBool isDst, const AnnualTimeZoneRule* rule, 00420 int32_t fromRawOffset, int32_t fromDSTSavings, 00421 UDate startTime, UErrorCode& status) const; 00422 00423 void beginZoneProps(VTZWriter& writer, UBool isDst, const UnicodeString& zonename, 00424 int32_t fromOffset, int32_t toOffset, UDate startTime, UErrorCode& status) const; 00425 void endZoneProps(VTZWriter& writer, UBool isDst, UErrorCode& status) const; 00426 void beginRRULE(VTZWriter& writer, int32_t month, UErrorCode& status) const; 00427 void appendUNTIL(VTZWriter& writer, const UnicodeString& until, UErrorCode& status) const; 00428 00429 BasicTimeZone *tz; 00430 UVector *vtzlines; 00431 UnicodeString tzurl; 00432 UDate lastmod; 00433 UnicodeString olsonzid; 00434 UnicodeString icutzver; 00435 00436 public: 00448 static UClassID U_EXPORT2 getStaticClassID(void); 00449 00461 virtual UClassID getDynamicClassID(void) const override; 00462 }; 00463 00464 U_NAMESPACE_END 00465 00466 #endif /* #if !UCONFIG_NO_FORMATTING */ 00467 00468 #endif /* U_SHOW_CPLUSPLUS_API */ 00469 00470 #endif // VTZONE_H 00471 //eof
1.7.6.1