"Fossies" - the Fresh Open Source Software Archive

Member "rbtz_8h_source.html" (3 Oct 2019, 38744 Bytes) of package /linux/misc/icu4c-65_1-docs.zip:


Caution: In this restricted "Fossies" environment the current HTML page may not be correctly presentated and may have some non-functional links. You can here alternatively try to browse the pure source code or just view or download the uninterpreted raw source code. If the rendering is insufficient you may try to find and view the page on the project site itself.

ICU 65.1  65.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 
14 #if U_SHOW_CPLUSPLUS_API
15 
21 #if !UCONFIG_NO_FORMATTING
22 
23 #include "unicode/basictz.h"
24 #include "unicode/unistr.h"
25 
26 U_NAMESPACE_BEGIN
27 
28 // forward declaration
29 class UVector;
30 struct Transition;
31 
39 public:
49  RuleBasedTimeZone(const UnicodeString& id, InitialTimeZoneRule* initialRule);
50 
56  RuleBasedTimeZone(const RuleBasedTimeZone& source);
57 
62  virtual ~RuleBasedTimeZone();
63 
70 
79  virtual UBool operator==(const TimeZone& that) const;
80 
89  virtual UBool operator!=(const TimeZone& that) const;
90 
106  void addTransitionRule(TimeZoneRule* rule, UErrorCode& status);
107 
117  void complete(UErrorCode& status);
118 
126  virtual RuleBasedTimeZone* clone() const;
127 
152  virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day,
153  uint8_t dayOfWeek, int32_t millis, UErrorCode& status) const;
154 
174  virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day,
175  uint8_t dayOfWeek, int32_t millis,
176  int32_t monthLength, UErrorCode& status) const;
177 
200  virtual void getOffset(UDate date, UBool local, int32_t& rawOffset,
201  int32_t& dstOffset, UErrorCode& ec) const;
202 
210  virtual void setRawOffset(int32_t offsetMillis);
211 
219  virtual int32_t getRawOffset(void) const;
220 
227  virtual UBool useDaylightTime(void) const;
228 
229 #ifndef U_FORCE_HIDE_DEPRECATED_API
230 
243  virtual UBool inDaylightTime(UDate date, UErrorCode& status) const;
244 #endif // U_FORCE_HIDE_DEPRECATED_API
245 
254  virtual UBool hasSameRules(const TimeZone& other) const;
255 
264  virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const;
265 
274  virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const;
275 
284  virtual int32_t countTransitionRules(UErrorCode& status) const;
285 
302  virtual void getTimeZoneRules(const InitialTimeZoneRule*& initial,
303  const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) const;
304 
309  virtual void getOffsetFromLocal(UDate date, int32_t nonExistingTimeOpt, int32_t duplicatedTimeOpt,
310  int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const;
311 
312 private:
313  void deleteRules(void);
314  void deleteTransitions(void);
315  UVector* copyRules(UVector* source);
316  TimeZoneRule* findRuleInFinal(UDate date, UBool local,
317  int32_t NonExistingTimeOpt, int32_t DuplicatedTimeOpt) const;
318  UBool findNext(UDate base, UBool inclusive, UDate& time, TimeZoneRule*& from, TimeZoneRule*& to) const;
319  UBool findPrev(UDate base, UBool inclusive, UDate& time, TimeZoneRule*& from, TimeZoneRule*& to) const;
320  int32_t getLocalDelta(int32_t rawBefore, int32_t dstBefore, int32_t rawAfter, int32_t dstAfter,
321  int32_t NonExistingTimeOpt, int32_t DuplicatedTimeOpt) const;
322  UDate getTransitionTime(Transition* transition, UBool local,
323  int32_t NonExistingTimeOpt, int32_t DuplicatedTimeOpt) const;
324  void getOffsetInternal(UDate date, UBool local, int32_t NonExistingTimeOpt, int32_t DuplicatedTimeOpt,
325  int32_t& rawOffset, int32_t& dstOffset, UErrorCode& ec) const;
326  void completeConst(UErrorCode &status) const;
327 
328  InitialTimeZoneRule *fInitialRule;
329  UVector *fHistoricRules;
330  UVector *fFinalRules;
331  UVector *fHistoricTransitions;
332  UBool fUpToDate;
333 
334 public:
346  static UClassID U_EXPORT2 getStaticClassID(void);
347 
359  virtual UClassID getDynamicClassID(void) const;
360 };
361 
362 U_NAMESPACE_END
363 
364 #endif /* #if !UCONFIG_NO_FORMATTING */
365 
366 #endif /* U_SHOW_CPLUSPLUS_API */
367 
368 #endif // RBTZ_H
369 
370 //eof
virtual UBool useDaylightTime(void) const =0
Queries if this time zone uses daylight savings time.
virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition &result) const =0
Gets the most recent time zone transition before the base time.
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...
a BasicTimeZone subclass implemented in terms of InitialTimeZoneRule and TimeZoneRule instances ...
Definition: rbtz.h:38
TimeZone & operator=(const TimeZone &right)
Default assignment operator.
double UDate
Date and Time data type.
Definition: utypes.h:203
C++ API: Unicode String.
virtual UBool operator==(const TimeZone &that) const
Returns true if the two TimeZones are equal.
void * UClassID
UClassID is used to identify classes without using the compiler's RTTI.
Definition: uobject.h:96
static UClassID getStaticClassID(void)
Return the class ID for this class.
TimeZone represents a time zone offset, and also figures out daylight savings.
Definition: timezone.h:133
C++ API: ICU TimeZone base class.
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside...
Definition: utypes.h:301
TimeZoneRule is a class representing a rule for time zone.
Definition: tzrule.h:36
InitialTimeZoneRule represents a time zone rule representing a time zone effective from the beginning...
Definition: tzrule.h:202
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.
TimeZoneTransition is a class representing a time zone transition.
Definition: tztrans.h:35
virtual UClassID getDynamicClassID(void) const =0
Returns a unique class ID POLYMORPHICALLY.
BasicTimeZone is an abstract class extending TimeZone.
Definition: basictz.h:38
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
Standard ICU4C error code type, a substitute for exceptions.
Definition: utypes.h:415
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...
virtual UBool hasSameRules(const TimeZone &other) const
Returns true if this zone has the same rule and offset as another zone.
Basic definitions for ICU, for both C and C++ APIs.
virtual BasicTimeZone * clone() const =0
Clones this object polymorphically.
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition: unistr.h:294
virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition &result) const =0
Gets the first time zone transition after the base time.
virtual int32_t countTransitionRules(UErrorCode &status) const =0
Returns the number of TimeZoneRules which represents time transitions, for this time zone...
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...
virtual UBool inDaylightTime(UDate date, UErrorCode &status) const =0
Queries if the given date is in daylight savings time in this time zone.
UBool operator!=(const TimeZone &that) const
Returns true if the two TimeZones are NOT equal; that is, if operator==() returns false...
Definition: timezone.h:459
int8_t UBool
The ICU boolean type.
Definition: umachine.h:261