6 #ifndef ACE_TIME_ZONE_MANAGER_H 7 #define ACE_TIME_ZONE_MANAGER_H 9 #include "ZoneProcessorCache.h" 10 #include "ZoneRegistrar.h" 11 #include "TimeZoneData.h" 29 template<
typename ZI,
typename ZR,
typename ZSC>
32 const ZR& getRegistrar()
const {
return mZoneRegistrar; }
34 TimeZone createForZoneInfo(
const ZI* zoneInfo) {
36 return TimeZone(zoneInfo, &mZoneProcessorCache);
39 TimeZone createForZoneName(
const char* name) {
40 const ZI* zoneInfo = mZoneRegistrar.getZoneInfoForName(name);
41 return createForZoneInfo(zoneInfo);
44 TimeZone createForZoneId(uint32_t
id) {
45 const ZI* zoneInfo = mZoneRegistrar.getZoneInfoForId(
id);
46 return createForZoneInfo(zoneInfo);
49 TimeZone createForZoneIndex(uint16_t index) {
50 const ZI* zoneInfo = mZoneRegistrar.getZoneInfoForIndex(index);
51 return createForZoneInfo(zoneInfo);
61 case TimeZone::kTypeError:
63 case TimeZone::kTypeManual:
67 case TimeZone::kTypeBasic:
68 case TimeZone::kTypeExtended:
69 return createForZoneId(d.
zoneId);
75 uint16_t indexForZoneName(
const char* name)
const {
76 const ZI* zoneInfo = mZoneRegistrar.getZoneInfoForName(name);
77 if (! zoneInfo)
return 0;
78 return (zoneInfo - mZoneRegistrar.getZoneInfoForIndex(0));
81 uint16_t indexForZoneId(uint32_t
id)
const {
82 const ZI* zoneInfo = mZoneRegistrar.getZoneInfoForId(
id);
83 if (! zoneInfo)
return 0;
84 return (zoneInfo - mZoneRegistrar.getZoneInfoForIndex(0));
88 ZoneManager(uint16_t registrySize,
const ZI*
const* zoneRegistry):
89 mZoneRegistrar(registrySize, zoneRegistry),
90 mZoneProcessorCache() {}
97 const ZR mZoneRegistrar;
98 ZSC mZoneProcessorCache;
105 template<u
int16_t SIZE>
107 BasicZoneRegistrar, BasicZoneProcessorCache<SIZE>> {
118 template<u
int16_t SIZE>
120 ExtendedZoneRegistrar, ExtendedZoneProcessorCache<SIZE>> {
136 template<u
int8_t SIZE>
140 template<u
int8_t SIZE>
Class that allows looking up the ZoneInfo (ZI) from its TZDB identifier (e.g.
Representation of a given time zone, implemented as an array of ZoneEra records.
static TimeZone forError()
Return a TimeZone representing an error condition.
Representation of a given time zone, implemented as an array of ZoneEra records.
Returns the TimeZone given the zoneInfo, zoneName, or zoneId.
static TimeZone forTimeOffset(TimeOffset stdOffset, TimeOffset dstOffset=TimeOffset())
Factory method to create from a UTC offset and an optional DST offset.
static TimeOffset forMinutes(int16_t minutes)
Create TimeOffset from minutes from 00:00.
Class that describes a time zone.
TimeZone createForTimeZoneData(const TimeZoneData &d)
Create from the TimeZoneData created by TimeZone::toTimeZoneData().
Data structure that captures the internal state of a TimeZone object with enough information so that ...
uint32_t zoneId
All of kTypeBasic, kTypeExtended, kTypeBasicManaged, kTypeExtendedManaged collapse down to a kTypeZon...