ICU 63.1 63.1

rbtz.h
Go to the documentation of this file.
1 // © 2016 and later: Unicode, Inc. and others.
2 // License & terms of use: http://www.unicode.org/copyright.html
3 /*
4 *******************************************************************************
5 * Copyright (C) 2007-2013, International Business Machines Corporation and *
6 * others. All Rights Reserved. *
7 *******************************************************************************
8 */
9 #ifndef RBTZ_H
10 #define RBTZ_H
11
12 #include "unicode/utypes.h"
13
19 #if !UCONFIG_NO_FORMATTING
20
21 #include "unicode/basictz.h"
22 #include "unicode/unistr.h"
23
24 U_NAMESPACE_BEGIN
25
26 // forward declaration
27 class UVector;
28 struct Transition;
29
36 class U_I18N_API RuleBasedTimeZone : public BasicTimeZone {
37 public:
47 RuleBasedTimeZone(const UnicodeString& id, InitialTimeZoneRule* initialRule);
48
54 RuleBasedTimeZone(const RuleBasedTimeZone& source);
55
60 virtual ~RuleBasedTimeZone();
61
67 RuleBasedTimeZone& operator=(const RuleBasedTimeZone& right);
68
77 virtual UBool operator==(const TimeZone& that) const;
78
87 virtual UBool operator!=(const TimeZone& that) const;
88
104 void addTransitionRule(TimeZoneRule* rule, UErrorCode& status);
105
115 void complete(UErrorCode& status);
116
124 virtual TimeZone* clone(void) const;
125
150 virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day,
151 uint8_t dayOfWeek, int32_t millis, UErrorCode& status) const;
152
172 virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day,
173 uint8_t dayOfWeek, int32_t millis,
174 int32_t monthLength, UErrorCode& status) const;
175
198 virtual void getOffset(UDate date, UBool local, int32_t& rawOffset,
199 int32_t& dstOffset, UErrorCode& ec) const;
200
208 virtual void setRawOffset(int32_t offsetMillis);
209
217 virtual int32_t getRawOffset(void) const;
218
225 virtual UBool useDaylightTime(void) const;
226
240 virtual UBool inDaylightTime(UDate date, UErrorCode& status) const;
241
250 virtual UBool hasSameRules(const TimeZone& other) const;
251
260 virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const;
261
270 virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const;
271
280 virtual int32_t countTransitionRules(UErrorCode& status) const;
281
298 virtual void getTimeZoneRules(const InitialTimeZoneRule*& initial,
299 const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) const;
300
305 virtual void getOffsetFromLocal(UDate date, int32_t nonExistingTimeOpt, int32_t duplicatedTimeOpt,
306 int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const;
307
308 private:
309 void deleteRules(void);
310 void deleteTransitions(void);
311 UVector* copyRules(UVector* source);
312 TimeZoneRule* findRuleInFinal(UDate date, UBool local,
313 int32_t NonExistingTimeOpt, int32_t DuplicatedTimeOpt) const;
314 UBool findNext(UDate base, UBool inclusive, UDate& time, TimeZoneRule*& from, TimeZoneRule*& to) const;
315 UBool findPrev(UDate base, UBool inclusive, UDate& time, TimeZoneRule*& from, TimeZoneRule*& to) const;
316 int32_t getLocalDelta(int32_t rawBefore, int32_t dstBefore, int32_t rawAfter, int32_t dstAfter,
317 int32_t NonExistingTimeOpt, int32_t DuplicatedTimeOpt) const;
318 UDate getTransitionTime(Transition* transition, UBool local,
319 int32_t NonExistingTimeOpt, int32_t DuplicatedTimeOpt) const;
320 void getOffsetInternal(UDate date, UBool local, int32_t NonExistingTimeOpt, int32_t DuplicatedTimeOpt,
321 int32_t& rawOffset, int32_t& dstOffset, UErrorCode& ec) const;
322 void completeConst(UErrorCode &status) const;
323
324 InitialTimeZoneRule *fInitialRule;
325 UVector *fHistoricRules;
326 UVector *fFinalRules;
327 UVector *fHistoricTransitions;
328 UBool fUpToDate;
329
330 public:
342 static UClassID U_EXPORT2 getStaticClassID(void);
343
355 virtual UClassID getDynamicClassID(void) const;
356 };
357
358 U_NAMESPACE_END
359
360 #endif /* #if !UCONFIG_NO_FORMATTING */
361
362 #endif // RBTZ_H
363
364 //eof
icu::TimeZone::useDaylightTime
virtual UBool useDaylightTime(void) const =0
Queries if this time zone uses daylight savings time.
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::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&#39;s adjusted GMT offset (i.e., the number of milliseconds to add to GMT to get loc...
icu::RuleBasedTimeZone
a BasicTimeZone subclass implemented in terms of InitialTimeZoneRule and TimeZoneRule instances ...
Definition: rbtz.h:36
icu::TimeZone::operator=
TimeZone & operator=(const TimeZone &right)
Default assignment operator.
UDate
double UDate
Date and Time data type.
Definition: utypes.h:203
unistr.h
C++ API: Unicode String.
icu::TimeZone::operator==
virtual UBool operator==(const TimeZone &that) const
Returns true if the two TimeZones are equal.
UClassID
void * UClassID
UClassID is used to identify classes without using the compiler&#39;s RTTI.
Definition: uobject.h:90
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:131
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:301
icu::TimeZoneRule
TimeZoneRule is a class representing a rule for time zone.
Definition: tzrule.h:34
icu::InitialTimeZoneRule
InitialTimeZoneRule represents a time zone rule representing a time zone effective from the beginning...
Definition: tzrule.h:200
U_NAMESPACE_BEGIN
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.
Definition: uversion.h:137
icu::TimeZone::clone
virtual TimeZone * clone(void) const =0
Clones TimeZone objects polymorphically.
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.
icu::TimeZoneTransition
TimeZoneTransition is a class representing a time zone transition.
Definition: tztrans.h:33
icu::TimeZone::getDynamicClassID
virtual UClassID getDynamicClassID(void) const =0
Returns a unique class ID POLYMORPHICALLY.
icu::BasicTimeZone
BasicTimeZone is an abstract class extending TimeZone.
Definition: basictz.h:36
U_NAMESPACE_END
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
Definition: uversion.h:138
icu::TimeZone::setRawOffset
virtual void setRawOffset(int32_t offsetMillis)=0
Sets the TimeZone&#39;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:401
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::TimeZone::hasSameRules
virtual UBool hasSameRules(const TimeZone &other) const
Returns true if this zone has the same rule and offset as another zone.
utypes.h
Basic definitions for ICU, for both C and C++ APIs.
icu::UnicodeString
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition: unistr.h:289
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::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&#39;s raw GMT offset (i.e., the number of milliseconds to add to GMT to get local ti...
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!=
UBool operator!=(const TimeZone &that) const
Returns true if the two TimeZones are NOT equal; that is, if operator==() returns false...
Definition: timezone.h:454
UBool
int8_t UBool
The ICU boolean type.
Definition: umachine.h:225