6 #ifndef ACE_TIME_BROKERS_H 7 #define ACE_TIME_BROKERS_H 40 #include "../common/compat.h" 52 template <
typename ZR>
56 mZoneRule(zoneRule) {}
67 bool isNull()
const {
return mZoneRule ==
nullptr; }
69 bool isNotNull()
const {
return mZoneRule !=
nullptr; }
71 int8_t fromYearTiny()
const {
return mZoneRule->fromYearTiny; }
73 int8_t toYearTiny()
const {
return mZoneRule->toYearTiny; }
75 int8_t inMonth()
const {
return mZoneRule->inMonth; }
77 int8_t onDayOfWeek()
const {
return mZoneRule->onDayOfWeek; }
79 int8_t onDayOfMonth()
const {
return mZoneRule->onDayOfMonth; }
81 uint8_t atTimeCode()
const {
return mZoneRule->atTimeCode; }
83 uint8_t atTimeModifier()
const {
return mZoneRule->atTimeModifier; }
85 int8_t deltaCode()
const {
return mZoneRule->deltaCode; }
87 uint8_t letter()
const {
return mZoneRule->letter; }
94 template <
typename ZP,
typename ZR>
98 mZonePolicy(zonePolicy) {}
106 bool isNull()
const {
return mZonePolicy ==
nullptr; }
108 bool isNotNull()
const {
return mZonePolicy !=
nullptr; }
110 uint8_t numRules()
const {
return mZonePolicy->numRules; }
116 uint8_t numLetters()
const {
return mZonePolicy->numLetters; }
118 const char* letter(uint8_t i)
const {
119 return mZonePolicy->letters[i];
123 const ZP*
const mZonePolicy;
127 template <
typename ZE,
typename ZP,
typename ZR>
142 const ZE* zoneEra()
const {
return mZoneEra; }
144 bool isNull()
const {
return mZoneEra ==
nullptr; }
146 bool isNotNull()
const {
return mZoneEra !=
nullptr; }
148 int8_t offsetCode()
const {
return mZoneEra->offsetCode; }
154 int8_t deltaCode()
const {
return mZoneEra->deltaCode; }
156 const char* format()
const {
return mZoneEra->format; }
158 int8_t untilYearTiny()
const {
return mZoneEra->untilYearTiny; }
160 uint8_t untilMonth()
const {
return mZoneEra->untilMonth; }
162 uint8_t untilDay()
const {
return mZoneEra->untilDay; }
164 uint8_t untilTimeCode()
const {
return mZoneEra->untilTimeCode; }
166 uint8_t untilTimeModifier()
const {
return mZoneEra->untilTimeModifier; }
174 template <
typename ZI,
typename ZE,
typename ZP,
typename ZR,
typename ZC>
178 mZoneInfo(zoneInfo) {}
186 const ZI* zoneInfo()
const {
return mZoneInfo; }
188 uint32_t zoneId()
const {
return mZoneInfo->zoneId; }
190 const char* name()
const {
return mZoneInfo->name; }
192 int16_t startYear()
const {
return mZoneInfo->zoneContext->startYear; }
194 int16_t untilYear()
const {
return mZoneInfo->zoneContext->untilYear; }
196 uint8_t numEras()
const {
return mZoneInfo->numEras; }
210 template <
typename ZI>
214 mZoneRegistry(zoneRegistry) {}
223 const ZI* zoneInfo(uint16_t i)
const {
224 return mZoneRegistry[i];
228 const ZI*
const*
const mZoneRegistry;
236 template <
typename ZR>
240 mZoneRule(zoneRule) {}
243 mZoneRule(
nullptr) {}
251 bool isNull()
const {
return mZoneRule ==
nullptr; }
253 bool isNotNull()
const {
return mZoneRule !=
nullptr; }
255 int8_t fromYearTiny()
const {
256 return pgm_read_byte(&mZoneRule->fromYearTiny);
259 int8_t toYearTiny()
const {
260 return pgm_read_byte(&mZoneRule->toYearTiny);
263 int8_t inMonth()
const {
264 return pgm_read_byte(&mZoneRule->inMonth);
267 int8_t onDayOfWeek()
const {
268 return pgm_read_byte(&mZoneRule->onDayOfWeek);
271 int8_t onDayOfMonth()
const {
272 return pgm_read_byte(&mZoneRule->onDayOfMonth);
275 uint8_t atTimeCode()
const {
276 return pgm_read_byte(&mZoneRule->atTimeCode);
279 uint8_t atTimeModifier()
const {
280 return pgm_read_byte(&mZoneRule->atTimeModifier);
283 int8_t deltaCode()
const {
284 return pgm_read_byte(&mZoneRule->deltaCode);
287 uint8_t letter()
const {
288 return pgm_read_byte(&mZoneRule->letter);
296 template <
typename ZP,
typename ZR>
300 mZonePolicy(zonePolicy) {}
308 bool isNull()
const {
return mZonePolicy ==
nullptr; }
310 bool isNotNull()
const {
return mZonePolicy !=
nullptr; }
312 uint8_t numRules()
const {
313 return pgm_read_byte(&mZonePolicy->numRules);
317 const ZR* rules = (
const ZR*) pgm_read_ptr(&mZonePolicy->rules);
321 uint8_t numLetters()
const {
322 return pgm_read_byte(&mZonePolicy->numLetters);
325 const char* letter(uint8_t i)
const {
326 const char*
const* letters = (
const char*
const*)
327 pgm_read_ptr(&mZonePolicy->letters);
328 return (
const char*) pgm_read_ptr(&letters[i]);
332 const ZP*
const mZonePolicy;
336 template <
typename ZE,
typename ZP,
typename ZR>
351 const ZE* zoneEra()
const {
return mZoneEra; }
353 bool isNull()
const {
return mZoneEra ==
nullptr; }
355 bool isNotNull()
const {
return mZoneEra !=
nullptr; }
357 int8_t offsetCode()
const {
358 return pgm_read_byte(&mZoneEra->offsetCode);
363 (
const ZP*) pgm_read_ptr(&mZoneEra->zonePolicy));
366 int8_t deltaCode()
const {
367 return pgm_read_byte(&mZoneEra->deltaCode);
370 const char* format()
const {
371 return (
const char*) pgm_read_ptr(&mZoneEra->format);
374 int8_t untilYearTiny()
const {
375 return pgm_read_byte(&mZoneEra->untilYearTiny);
378 uint8_t untilMonth()
const {
379 return pgm_read_byte(&mZoneEra->untilMonth);
382 uint8_t untilDay()
const {
383 return pgm_read_byte(&mZoneEra->untilDay);
386 uint8_t untilTimeCode()
const {
387 return pgm_read_byte(&mZoneEra->untilTimeCode);
390 uint8_t untilTimeModifier()
const {
391 return pgm_read_byte(&mZoneEra->untilTimeModifier);
400 template <
typename ZI,
typename ZE,
typename ZP,
typename ZR,
typename ZC>
404 mZoneInfo(zoneInfo) {}
412 const ZI* zoneInfo()
const {
return mZoneInfo; }
414 const char* name()
const {
415 return (
const char*) pgm_read_ptr(&mZoneInfo->name);
418 uint32_t zoneId()
const {
419 return pgm_read_dword(&mZoneInfo->zoneId);
422 int16_t startYear()
const {
423 const ZC* zoneContext = (
const ZC*) pgm_read_ptr(&mZoneInfo->zoneContext);
424 return zoneContext->startYear;
427 int16_t untilYear()
const {
428 const ZC* zoneContext = (
const ZC*) pgm_read_ptr(&mZoneInfo->zoneContext);
429 return zoneContext->untilYear;
432 uint8_t numEras()
const {
433 return pgm_read_byte(&mZoneInfo->numEras);
437 const ZE* eras = (
const ZE*) pgm_read_ptr(&mZoneInfo->eras);
449 template <
typename ZI>
453 mZoneRegistry(zoneRegistry) {}
462 const ZI* zoneInfo(uint16_t i)
const {
463 return (
const ZI*) pgm_read_ptr(&mZoneRegistry[i]);
467 const ZI*
const* mZoneRegistry;
476 #if ACE_TIME_USE_PROGMEM 482 ZoneContext> ZoneInfoBroker;
490 ZoneContext> ZoneInfoBroker;
498 #if ACE_TIME_USE_PROGMEM 504 ZoneContext> ZoneInfoBroker;
512 ZoneContext> ZoneInfoBroker;
Data broker for accessing ZonePolicy in SRAM.
Data broker for accessing ZoneRule in SRAM.
Data broker for accessing ZonePolicy in PROGMEM.
Data broker for accessing the ZoneRegistry in SRAM.
Data broker for accessing ZoneInfo in PROGMEM.
Data broker for accessing ZoneEra in SRAM.
Data broker for accessing ZoneEra in PROGMEM.
Data broker for accessing the ZoneRegistry in PROGMEM.
Data broker for accessing ZoneInfo in SRAM.
Data broker for accessing ZoneRule in PROGMEM.