ICU 56.1: rbtz.h Source File

ICU 56.1 56.1

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

- File List
- Globals

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
icu::RuleBasedTimeZone
a BasicTimeZone subclass implemented in terms of InitialTimeZoneRule and TimeZoneRule instances ...
Definition: rbtz.h:34
icu::TimeZone::useDaylightTime
virtual UBool useDaylightTime(void) const =0
Queries if this time zone uses daylight savings time.
icu::TimeZone::getDynamicClassID
virtual UClassID getDynamicClassID(void) const =0
Returns a unique class ID POLYMORPHICALLY.
icu::TimeZone::operator==
virtual UBool operator==(const TimeZone &that) const
Returns true if the two TimeZones are equal.
icu::TimeZone::inDaylightTime
virtual UBool inDaylightTime(UDate date, UErrorCode &status) const =0
Queries if the given date is in daylight savings time in this time zone.
icu::TimeZone::operator=
TimeZone & operator=(const TimeZone &right)
Default assignment operator.
icu::TimeZone::getOffset
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...
icu::BasicTimeZone::getOffsetFromLocal
virtual void getOffsetFromLocal(UDate date, int32_t nonExistingTimeOpt, int32_t duplicatedTimeOpt, int32_t &rawOffset, int32_t &dstOffset, UErrorCode &status) const
Get time zone offsets from local wall time.
UDate
double UDate
Date and Time data type.
Definition: utypes.h:201
unistr.h
C++ API: Unicode String.
UClassID
void * UClassID
UClassID is used to identify classes without using the compiler's RTTI.
Definition: uobject.h:91
icu::TimeZone::getStaticClassID
static UClassID getStaticClassID(void)
Return the class ID for this class.
icu::TimeZone
TimeZone represents a time zone offset, and also figures out daylight savings.
Definition: timezone.h:129
icu::TimeZone::clone
virtual TimeZone * clone(void) const =0
Clones TimeZone objects polymorphically.
basictz.h
C++ API: ICU TimeZone base class.
U_I18N_API
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside...
Definition: utypes.h:358
icu::TimeZoneRule
TimeZoneRule is a class representing a rule for time zone.
Definition: tzrule.h:32
icu::InitialTimeZoneRule
InitialTimeZoneRule represents a time zone rule representing a time zone effective from the beginning...
Definition: tzrule.h:198
U_NAMESPACE_BEGIN
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.
Definition: uversion.h:129
icu::BasicTimeZone::getPreviousTransition
virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition &result) const =0
Gets the most recent time zone transition before the base time.
icu::TimeZone::hasSameRules
virtual UBool hasSameRules(const TimeZone &other) const
Returns true if this zone has the same rule and offset as another zone.
icu::TimeZoneTransition
TimeZoneTransition is a class representing a time zone transition.
Definition: tztrans.h:31
icu::BasicTimeZone::getNextTransition
virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition &result) const =0
Gets the first time zone transition after the base time.
icu::BasicTimeZone
BasicTimeZone is an abstract class extending TimeZone.
Definition: basictz.h:34
icu::BasicTimeZone::countTransitionRules
virtual int32_t countTransitionRules(UErrorCode &status) const =0
Returns the number of TimeZoneRules which represents time transitions, for this time zone...
icu::TimeZone::getRawOffset
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...
U_NAMESPACE_END
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
Definition: uversion.h:130
icu::TimeZone::operator!=
UBool operator!=(const TimeZone &that) const
Returns true if the two TimeZones are NOT equal; that is, if operator==() returns false...
Definition: timezone.h:452
icu::TimeZone::setRawOffset
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...
UErrorCode
UErrorCode
Error code to replace exception handling, so that the code is compatible with all C++ compilers...
Definition: utypes.h:476
utypes.h
Basic definitions for ICU, for both C and C++ APIs.
icu::BasicTimeZone::getTimeZoneRules
virtual void getTimeZoneRules(const InitialTimeZoneRule *&initial, const TimeZoneRule *trsrules[], int32_t &trscount, UErrorCode &status) const =0
Gets the InitialTimeZoneRule and the set of TimeZoneRule which represent time transitions for this ti...
icu::UnicodeString
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition: unistr.h:293
UBool
int8_t UBool
The ICU boolean type.
Definition: umachine.h:234