ICU 55.1 55.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
rbtz.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 RBTZ_H
8 #define RBTZ_H
9
10 #include "unicode/utypes.h"
11
17 #if !UCONFIG_NO_FORMATTING
18
19 #include "unicode/basictz.h"
20 #include "unicode/unistr.h"
21
22 U_NAMESPACE_BEGIN
23
24 // forward declaration
25 class UVector;
26 struct Transition;
27
34 class U_I18N_API RuleBasedTimeZone : public BasicTimeZone {
35 public:
45 RuleBasedTimeZone(const UnicodeString& id, InitialTimeZoneRule* initialRule);
46
52 RuleBasedTimeZone(const RuleBasedTimeZone& source);
53
58 virtual ~RuleBasedTimeZone();
59
65 RuleBasedTimeZone& operator=(const RuleBasedTimeZone& right);
66
75 virtual UBool operator==(const TimeZone& that) const;
76
85 virtual UBool operator!=(const TimeZone& that) const;
86
102 void addTransitionRule(TimeZoneRule* rule, UErrorCode& status);
103
113 void complete(UErrorCode& status);
114
122 virtual TimeZone* clone(void) const;
123
148 virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day,
149 uint8_t dayOfWeek, int32_t millis, UErrorCode& status) const;
150
170 virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day,
171 uint8_t dayOfWeek, int32_t millis,
172 int32_t monthLength, UErrorCode& status) const;
173
196 virtual void getOffset(UDate date, UBool local, int32_t& rawOffset,
197 int32_t& dstOffset, UErrorCode& ec) const;
198
206 virtual void setRawOffset(int32_t offsetMillis);
207
215 virtual int32_t getRawOffset(void) const;
216
223 virtual UBool useDaylightTime(void) const;
224
238 virtual UBool inDaylightTime(UDate date, UErrorCode& status) const;
239
248 virtual UBool hasSameRules(const TimeZone& other) const;
249
258 virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const;
259
268 virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const;
269
278 virtual int32_t countTransitionRules(UErrorCode& status) const;
279
296 virtual void getTimeZoneRules(const InitialTimeZoneRule*& initial,
297 const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) const;
298
303 virtual void getOffsetFromLocal(UDate date, int32_t nonExistingTimeOpt, int32_t duplicatedTimeOpt,
304 int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const;
305
306 private:
307 void deleteRules(void);
308 void deleteTransitions(void);
309 UVector* copyRules(UVector* source);
310 TimeZoneRule* findRuleInFinal(UDate date, UBool local,
311 int32_t NonExistingTimeOpt, int32_t DuplicatedTimeOpt) const;
312 UBool findNext(UDate base, UBool inclusive, UDate& time, TimeZoneRule*& from, TimeZoneRule*& to) const;
313 UBool findPrev(UDate base, UBool inclusive, UDate& time, TimeZoneRule*& from, TimeZoneRule*& to) const;
314 int32_t getLocalDelta(int32_t rawBefore, int32_t dstBefore, int32_t rawAfter, int32_t dstAfter,
315 int32_t NonExistingTimeOpt, int32_t DuplicatedTimeOpt) const;
316 UDate getTransitionTime(Transition* transition, UBool local,
317 int32_t NonExistingTimeOpt, int32_t DuplicatedTimeOpt) const;
318 void getOffsetInternal(UDate date, UBool local, int32_t NonExistingTimeOpt, int32_t DuplicatedTimeOpt,
319 int32_t& rawOffset, int32_t& dstOffset, UErrorCode& ec) const;
320 void completeConst(UErrorCode &status) const;
321
322 InitialTimeZoneRule *fInitialRule;
323 UVector *fHistoricRules;
324 UVector *fFinalRules;
325 UVector *fHistoricTransitions;
326 UBool fUpToDate;
327
328 public:
340 static UClassID U_EXPORT2 getStaticClassID(void);
341
353 virtual UClassID getDynamicClassID(void) const;
354 };
355
356 U_NAMESPACE_END
357
358 #endif /* #if !UCONFIG_NO_FORMATTING */
359
360 #endif // RBTZ_H
361
362 //eof