00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef BASICTZ_H
00010 #define BASICTZ_H
00011
00017 #include "unicode/utypes.h"
00018
00019 #if !UCONFIG_NO_FORMATTING
00020
00021 #include "unicode/timezone.h"
00022 #include "unicode/tzrule.h"
00023 #include "unicode/tztrans.h"
00024
00025 U_NAMESPACE_BEGIN
00026
00027
00028 class UVector;
00029
00036 class U_I18N_API BasicTimeZone: public TimeZone {
00037 public:
00042 virtual ~BasicTimeZone();
00043
00052 virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const = 0;
00053
00062 virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const = 0;
00063
00084 virtual UBool hasEquivalentTransitions(const BasicTimeZone& tz, UDate start, UDate end,
00085 UBool ignoreDstAmount, UErrorCode& ec) const;
00086
00095 virtual int32_t countTransitionRules(UErrorCode& status) const = 0;
00096
00113 virtual void getTimeZoneRules(const InitialTimeZoneRule*& initial,
00114 const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) const = 0;
00115
00142 virtual void getSimpleRulesNear(UDate date, InitialTimeZoneRule*& initial,
00143 AnnualTimeZoneRule*& std, AnnualTimeZoneRule*& dst, UErrorCode& status) const;
00144
00145
00146 #ifndef U_HIDE_INTERNAL_API
00147
00151 enum {
00152 kStandard = 0x01,
00153 kDaylight = 0x03,
00154 kFormer = 0x04,
00155 kLatter = 0x0C
00156 };
00157 #endif
00158
00163 virtual void getOffsetFromLocal(UDate date, int32_t nonExistingTimeOpt, int32_t duplicatedTimeOpt,
00164 int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const;
00165
00166 protected:
00167
00168 #ifndef U_HIDE_INTERNAL_API
00169
00173 enum {
00174 kStdDstMask = kDaylight,
00175 kFormerLatterMask = kLatter
00176 };
00177 #endif
00178
00183 BasicTimeZone();
00184
00190 BasicTimeZone(const UnicodeString &id);
00191
00197 BasicTimeZone(const BasicTimeZone& source);
00198
00206 void getTimeZoneRulesAfter(UDate start, InitialTimeZoneRule*& initial, UVector*& transitionRules,
00207 UErrorCode& status) const;
00208 };
00209
00210 U_NAMESPACE_END
00211
00212 #endif
00213
00214 #endif // BASICTZ_H
00215
00216