|
ICU 73.2
73.2
|
00001 // © 2016 and later: Unicode, Inc. and others. 00002 // License & terms of use: http://www.unicode.org/copyright.html 00003 /* 00004 ******************************************************************************* 00005 * Copyright (C) 2007-2013, International Business Machines Corporation and 00006 * others. All Rights Reserved. 00007 ******************************************************************************* 00008 */ 00009 #ifndef BASICTZ_H 00010 #define BASICTZ_H 00011 00017 #include "unicode/utypes.h" 00018 00019 #if U_SHOW_CPLUSPLUS_API 00020 00021 #if !UCONFIG_NO_FORMATTING 00022 00023 #include "unicode/timezone.h" 00024 #include "unicode/tzrule.h" 00025 #include "unicode/tztrans.h" 00026 00027 U_NAMESPACE_BEGIN 00028 00029 // forward declarations 00030 class UVector; 00031 00038 class U_I18N_API BasicTimeZone: public TimeZone { 00039 public: 00044 virtual ~BasicTimeZone(); 00045 00052 virtual BasicTimeZone* clone() const override = 0; 00053 00062 virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const = 0; 00063 00072 virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const = 0; 00073 00094 virtual UBool hasEquivalentTransitions(const BasicTimeZone& tz, UDate start, UDate end, 00095 UBool ignoreDstAmount, UErrorCode& ec) const; 00096 00105 virtual int32_t countTransitionRules(UErrorCode& status) const = 0; 00106 00123 virtual void getTimeZoneRules(const InitialTimeZoneRule*& initial, 00124 const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) const = 0; 00125 00152 virtual void getSimpleRulesNear(UDate date, InitialTimeZoneRule*& initial, 00153 AnnualTimeZoneRule*& std, AnnualTimeZoneRule*& dst, UErrorCode& status) const; 00154 00159 virtual void getOffsetFromLocal( 00160 UDate date, UTimeZoneLocalOption nonExistingTimeOpt, 00161 UTimeZoneLocalOption duplicatedTimeOpt, int32_t& rawOffset, 00162 int32_t& dstOffset, UErrorCode& status) const; 00163 00164 00165 #ifndef U_HIDE_INTERNAL_API 00166 00170 enum { 00171 kStandard = 0x01, 00172 kDaylight = 0x03, 00173 kFormer = 0x04, /* UCAL_TZ_LOCAL_FORMER */ 00174 kLatter = 0x0C /* UCAL_TZ_LOCAL_LATTER */ 00175 }; 00176 00181 void getOffsetFromLocal(UDate date, int32_t nonExistingTimeOpt, int32_t duplicatedTimeOpt, 00182 int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const; 00183 #endif /* U_HIDE_INTERNAL_API */ 00184 00185 protected: 00186 00187 #ifndef U_HIDE_INTERNAL_API 00188 00192 static constexpr int32_t kStdDstMask = kDaylight; 00197 static constexpr int32_t kFormerLatterMask = kLatter; 00198 #endif /* U_HIDE_INTERNAL_API */ 00199 00204 BasicTimeZone(); 00205 00211 BasicTimeZone(const UnicodeString &id); 00212 00218 BasicTimeZone(const BasicTimeZone& source); 00219 00224 BasicTimeZone& operator=(const BasicTimeZone&) = default; 00225 00236 void getTimeZoneRulesAfter(UDate start, InitialTimeZoneRule*& initial, UVector*& transitionRules, 00237 UErrorCode& status) const; 00238 }; 00239 00240 U_NAMESPACE_END 00241 00242 #endif /* #if !UCONFIG_NO_FORMATTING */ 00243 00244 #endif /* U_SHOW_CPLUSPLUS_API */ 00245 00246 #endif // BASICTZ_H 00247 00248 //eof
1.7.6.1