ICU 54.1 54.1

- Main Page
- Related Pages
- Modules
- Namespaces
- Data Structures
- Files

- File List
- Globals

All Data Structures Namespaces 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-2013, 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
21 U_NAMESPACE_BEGIN
22
23 class VTZWriter;
24 class VTZReader;
25 class UVector;
26
41 class U_I18N_API VTimeZone : public BasicTimeZone {
42 public:
48 VTimeZone(const VTimeZone& source);
49
54 virtual ~VTimeZone();
55
61 VTimeZone& operator=(const VTimeZone& right);
62
71 virtual UBool operator==(const TimeZone& that) const;
72
81 virtual UBool operator!=(const TimeZone& that) const;
82
90 static VTimeZone* createVTimeZoneByID(const UnicodeString& ID);
91
99 static VTimeZone* createVTimeZoneFromBasicTimeZone(const BasicTimeZone& basicTZ,
100 UErrorCode &status);
101
111 static VTimeZone* createVTimeZone(const UnicodeString& vtzdata, UErrorCode& status);
112
121 UBool getTZURL(UnicodeString& url) const;
122
128 void setTZURL(const UnicodeString& url);
129
138 UBool getLastModified(UDate& lastModified) const;
139
145 void setLastModified(UDate lastModified);
146
153 void write(UnicodeString& result, UErrorCode& status) const;
154
163 void write(UDate start, UnicodeString& result, UErrorCode& status) const;
164
178 void writeSimple(UDate time, UnicodeString& result, UErrorCode& status) const;
179
186 virtual TimeZone* clone(void) const;
187
212 virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day,
213 uint8_t dayOfWeek, int32_t millis, UErrorCode& status) const;
214
234 virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day,
235 uint8_t dayOfWeek, int32_t millis,
236 int32_t monthLength, UErrorCode& status) const;
237
260 virtual void getOffset(UDate date, UBool local, int32_t& rawOffset,
261 int32_t& dstOffset, UErrorCode& ec) const;
262
270 virtual void setRawOffset(int32_t offsetMillis);
271
279 virtual int32_t getRawOffset(void) const;
280
287 virtual UBool useDaylightTime(void) const;
288
302 virtual UBool inDaylightTime(UDate date, UErrorCode& status) const;
303
312 virtual UBool hasSameRules(const TimeZone& other) const;
313
322 virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const;
323
332 virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const;
333
342 virtual int32_t countTransitionRules(UErrorCode& status) const;
343
360 virtual void getTimeZoneRules(const InitialTimeZoneRule*& initial,
361 const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) const;
362
363 private:
364 enum { DEFAULT_VTIMEZONE_LINES = 100 };
365
369 VTimeZone();
370 static VTimeZone* createVTimeZone(VTZReader* reader);
371 void write(VTZWriter& writer, UErrorCode& status) const;
372 void write(UDate start, VTZWriter& writer, UErrorCode& status) const;
373 void writeSimple(UDate time, VTZWriter& writer, UErrorCode& status) const;
374 void load(VTZReader& reader, UErrorCode& status);
375 void parse(UErrorCode& status);
376
377 void writeZone(VTZWriter& w, BasicTimeZone& basictz, UVector* customProps,
378 UErrorCode& status) const;
379
380 void writeHeaders(VTZWriter& w, UErrorCode& status) const;
381 void writeFooter(VTZWriter& writer, UErrorCode& status) const;
382
383 void writeZonePropsByTime(VTZWriter& writer, UBool isDst, const UnicodeString& zonename,
384 int32_t fromOffset, int32_t toOffset, UDate time, UBool withRDATE,
385 UErrorCode& status) const;
386 void writeZonePropsByDOM(VTZWriter& writer, UBool isDst, const UnicodeString& zonename,
387 int32_t fromOffset, int32_t toOffset,
388 int32_t month, int32_t dayOfMonth, UDate startTime, UDate untilTime,
389 UErrorCode& status) const;
390 void writeZonePropsByDOW(VTZWriter& writer, UBool isDst, const UnicodeString& zonename,
391 int32_t fromOffset, int32_t toOffset,
392 int32_t month, int32_t weekInMonth, int32_t dayOfWeek,
393 UDate startTime, UDate untilTime, UErrorCode& status) const;
394 void writeZonePropsByDOW_GEQ_DOM(VTZWriter& writer, UBool isDst, const UnicodeString& zonename,
395 int32_t fromOffset, int32_t toOffset,
396 int32_t month, int32_t dayOfMonth, int32_t dayOfWeek,
397 UDate startTime, UDate untilTime, UErrorCode& status) const;
398 void writeZonePropsByDOW_GEQ_DOM_sub(VTZWriter& writer, int32_t month, int32_t dayOfMonth,
399 int32_t dayOfWeek, int32_t numDays,
400 UDate untilTime, int32_t fromOffset, UErrorCode& status) const;
401 void writeZonePropsByDOW_LEQ_DOM(VTZWriter& writer, UBool isDst, const UnicodeString& zonename,
402 int32_t fromOffset, int32_t toOffset,
403 int32_t month, int32_t dayOfMonth, int32_t dayOfWeek,
404 UDate startTime, UDate untilTime, UErrorCode& status) const;
405 void writeFinalRule(VTZWriter& writer, UBool isDst, const AnnualTimeZoneRule* rule,
406 int32_t fromRawOffset, int32_t fromDSTSavings,
407 UDate startTime, UErrorCode& status) const;
408
409 void beginZoneProps(VTZWriter& writer, UBool isDst, const UnicodeString& zonename,
410 int32_t fromOffset, int32_t toOffset, UDate startTime, UErrorCode& status) const;
411 void endZoneProps(VTZWriter& writer, UBool isDst, UErrorCode& status) const;
412 void beginRRULE(VTZWriter& writer, int32_t month, UErrorCode& status) const;
413 void appendUNTIL(VTZWriter& writer, const UnicodeString& until, UErrorCode& status) const;
414
415 BasicTimeZone *tz;
416 UVector *vtzlines;
417 UnicodeString tzurl;
418 UDate lastmod;
419 UnicodeString olsonzid;
420 UnicodeString icutzver;
421
422 public:
434 static UClassID U_EXPORT2 getStaticClassID(void);
435
447 virtual UClassID getDynamicClassID(void) const;
448 };
449
450 U_NAMESPACE_END
451
452 #endif /* #if !UCONFIG_NO_FORMATTING */
453
454 #endif // VTZONE_H
455 //eof