ICU 73.2  73.2
basictz.h
Go to the documentation of this file.
00001 // © 2016 and later: Unicode, Inc. and others.
00002 // License & terms of use: http://www.unicode.org/copyright.html
00003 /*
00004 *******************************************************************************
00005 * Copyright (C) 2007-2013, International Business Machines Corporation and
00006 * others. All Rights Reserved.
00007 *******************************************************************************
00008 */
00009 #ifndef BASICTZ_H
00010 #define BASICTZ_H
00011 
00017 #include "unicode/utypes.h"
00018 
00019 #if U_SHOW_CPLUSPLUS_API
00020 
00021 #if !UCONFIG_NO_FORMATTING
00022 
00023 #include "unicode/timezone.h"
00024 #include "unicode/tzrule.h"
00025 #include "unicode/tztrans.h"
00026 
00027 U_NAMESPACE_BEGIN
00028 
00029 // forward declarations
00030 class UVector;
00031 
00038 class U_I18N_API BasicTimeZone: public TimeZone {
00039 public:
00044     virtual ~BasicTimeZone();
00045 
00052     virtual BasicTimeZone* clone() const override = 0;
00053 
00062     virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const = 0;
00063 
00072     virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const = 0;
00073 
00094     virtual UBool hasEquivalentTransitions(const BasicTimeZone& tz, UDate start, UDate end,
00095         UBool ignoreDstAmount, UErrorCode& ec) const;
00096 
00105     virtual int32_t countTransitionRules(UErrorCode& status) const = 0;
00106 
00123     virtual void getTimeZoneRules(const InitialTimeZoneRule*& initial,
00124         const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) const = 0;
00125 
00152     virtual void getSimpleRulesNear(UDate date, InitialTimeZoneRule*& initial,
00153         AnnualTimeZoneRule*& std, AnnualTimeZoneRule*& dst, UErrorCode& status) const;
00154 
00159     virtual void getOffsetFromLocal(
00160         UDate date, UTimeZoneLocalOption nonExistingTimeOpt,
00161         UTimeZoneLocalOption duplicatedTimeOpt, int32_t& rawOffset,
00162         int32_t& dstOffset, UErrorCode& status) const;
00163 
00164 
00165 #ifndef U_HIDE_INTERNAL_API
00166 
00170     enum {
00171         kStandard = 0x01,
00172         kDaylight = 0x03,
00173         kFormer = 0x04, /* UCAL_TZ_LOCAL_FORMER */
00174         kLatter = 0x0C  /* UCAL_TZ_LOCAL_LATTER */
00175     };
00176 
00181     void getOffsetFromLocal(UDate date, int32_t nonExistingTimeOpt, int32_t duplicatedTimeOpt,
00182         int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const;
00183 #endif  /* U_HIDE_INTERNAL_API */
00184 
00185 protected:
00186 
00187 #ifndef U_HIDE_INTERNAL_API
00188 
00192     static constexpr int32_t kStdDstMask = kDaylight;
00197     static constexpr int32_t kFormerLatterMask = kLatter;
00198 #endif  /* U_HIDE_INTERNAL_API */
00199 
00204     BasicTimeZone();
00205 
00211     BasicTimeZone(const UnicodeString &id);
00212 
00218     BasicTimeZone(const BasicTimeZone& source);
00219 
00224     BasicTimeZone& operator=(const BasicTimeZone&) = default;
00225 
00236     void getTimeZoneRulesAfter(UDate start, InitialTimeZoneRule*& initial, UVector*& transitionRules,
00237         UErrorCode& status) const;
00238 };
00239 
00240 U_NAMESPACE_END
00241 
00242 #endif /* #if !UCONFIG_NO_FORMATTING */
00243 
00244 #endif /* U_SHOW_CPLUSPLUS_API */
00245 
00246 #endif // BASICTZ_H
00247 
00248 //eof