00001
00002
00003
00004
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
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) = 0;
00051
00060 virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) = 0;
00061
00082 virtual UBool hasEquivalentTransitions( BasicTimeZone& tz, UDate start, UDate end,
00083 UBool ignoreDstAmount, UErrorCode& ec) ;
00084
00093 virtual int32_t countTransitionRules(UErrorCode& status) = 0;
00094
00111 virtual void getTimeZoneRules(const InitialTimeZoneRule*& initial,
00112 const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) = 0;
00113
00140 virtual void getSimpleRulesNear(UDate date, InitialTimeZoneRule*& initial,
00141 AnnualTimeZoneRule*& std, AnnualTimeZoneRule*& dst, UErrorCode& status) ;
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
00156
00161 virtual void getOffsetFromLocal(UDate date, int32_t nonExistingTimeOpt, int32_t duplicatedTimeOpt,
00162 int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) ;
00163
00164 protected:
00165
00166 #ifndef U_HIDE_INTERNAL_API
00167
00171 enum {
00172 kStdDstMask = kDaylight,
00173 kFormerLatterMask = kLatter
00174 };
00175 #endif
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) ;
00206 };
00207
00208 U_NAMESPACE_END
00209
00210 #endif
00211
00212 #endif // BASICTZ_H
00213
00214