ICU 49.1.1
49.1.1
|
00001 /* 00002 ******************************************************************************* 00003 * Copyright (C) 2007-2011, International Business Machines Corporation and 00004 * others. All Rights Reserved. 00005 ******************************************************************************* 00006 */ 00007 #ifndef BASICTZ_H 00008 #define BASICTZ_H 00009 00015 #include "unicode/utypes.h" 00016 00017 #if !UCONFIG_NO_FORMATTING 00018 00019 #include "unicode/timezone.h" 00020 #include "unicode/tzrule.h" 00021 #include "unicode/tztrans.h" 00022 00023 U_NAMESPACE_BEGIN 00024 00025 // forward declarations 00026 class UVector; 00027 00034 class U_I18N_API BasicTimeZone: public TimeZone { 00035 public: 00040 virtual ~BasicTimeZone(); 00041 00050 virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) /*const*/ = 0; 00051 00060 virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) /*const*/ = 0; 00061 00082 virtual UBool hasEquivalentTransitions(/*const*/ BasicTimeZone& tz, UDate start, UDate end, 00083 UBool ignoreDstAmount, UErrorCode& ec) /*const*/; 00084 00093 virtual int32_t countTransitionRules(UErrorCode& status) /*const*/ = 0; 00094 00111 virtual void getTimeZoneRules(const InitialTimeZoneRule*& initial, 00112 const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) /*const*/ = 0; 00113 00140 virtual void getSimpleRulesNear(UDate date, InitialTimeZoneRule*& initial, 00141 AnnualTimeZoneRule*& std, AnnualTimeZoneRule*& dst, UErrorCode& status) /*const*/; 00142 00143 00144 #ifndef U_HIDE_INTERNAL_API 00145 00149 enum { 00150 kStandard = 0x01, 00151 kDaylight = 0x03, 00152 kFormer = 0x04, 00153 kLatter = 0x0C 00154 }; 00155 #endif /* U_HIDE_INTERNAL_API */ 00156 00161 virtual void getOffsetFromLocal(UDate date, int32_t nonExistingTimeOpt, int32_t duplicatedTimeOpt, 00162 int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) /*const*/; 00163 00164 protected: 00165 00166 #ifndef U_HIDE_INTERNAL_API 00167 00171 enum { 00172 kStdDstMask = kDaylight, 00173 kFormerLatterMask = kLatter 00174 }; 00175 #endif /* U_HIDE_INTERNAL_API */ 00176 00181 BasicTimeZone(); 00182 00188 BasicTimeZone(const UnicodeString &id); 00189 00195 BasicTimeZone(const BasicTimeZone& source); 00196 00204 void getTimeZoneRulesAfter(UDate start, InitialTimeZoneRule*& initial, UVector*& transitionRules, 00205 UErrorCode& status) /*const*/; 00206 }; 00207 00208 U_NAMESPACE_END 00209 00210 #endif /* #if !UCONFIG_NO_FORMATTING */ 00211 00212 #endif // BASICTZ_H 00213 00214 //eof