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() {}
94 ZoneManager(
const ZoneManager&) =
delete;
95 ZoneManager& operator=(
const ZoneManager&) =
delete;
97 const ZR mZoneRegistrar;
98 ZSC mZoneProcessorCache;
105 template<u
int16_t SIZE>
107 BasicZoneRegistrar, BasicZoneProcessorCache<SIZE>> {
110 const basic::ZoneInfo*
const* zoneRegistry):
118 template<u
int16_t SIZE>
120 ExtendedZoneRegistrar, ExtendedZoneProcessorCache<SIZE>> {
123 const extended::ZoneInfo*
const* zoneRegistry):
136 template<u
int8_t SIZE>
140 template<u
int8_t SIZE>