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 protected:
00148 BasicTimeZone();
00149
00155 BasicTimeZone(const UnicodeString &id);
00156
00162 BasicTimeZone(const BasicTimeZone& source);
00163
00171 void getTimeZoneRulesAfter(UDate start, InitialTimeZoneRule*& initial, UVector*& transitionRules,
00172 UErrorCode& status) ;
00173 };
00174
00175 U_NAMESPACE_END
00176
00177 #endif
00178
00179 #endif // BASICTZ_H
00180
00181