ICU 49.1.1  49.1.1
basictz.h
Go to the documentation of this file.
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