AceTime  3.0.0
Date and time classes for Arduino that support timezones from the TZ Database.
zone_infos.cpp
1 // This file was generated by the following script:
2 //
3 // $ /home/brian/src/AceTimeSuite/compiler/src/acetimecompiler/tzcompiler.py
4 // --input_dir /home/brian/src/AceTimeSuite/libraries/AceTimeLib/src/testingzonedb/tzfiles
5 // --output_dir /home/brian/src/AceTimeSuite/libraries/AceTimeLib/src/testingzonedb
6 // --tz_version 2025b
7 // --action zonedb
8 // --language arduino
9 // --scope basic
10 // --db_namespace testingzonedb
11 // --zi_namespace basic::Info
12 // --include_list include_list.txt
13 // --nocompress
14 // --start_year 1980
15 // --until_year 2200
16 //
17 // using the TZ Database files
18 //
19 // africa
20 // antarctica
21 // asia
22 // australasia
23 // backward
24 // etcetera
25 // europe
26 // northamerica
27 // southamerica
28 //
29 // from https://github.com/eggert/tz/releases/tag/2025b
30 //
31 // Supported Zones: 12 (11 zones, 1 links)
32 // Unsupported Zones: 585 (329 zones, 256 links)
33 //
34 // Requested Years: [1980,2200]
35 // Accurate Years: [1980,32767]
36 //
37 // Original Years: [1844,2087]
38 // Generated Years: [1945,2007]
39 // Lower/Upper Truncated: [True,False]
40 //
41 // Estimator Years: [1945,2009]
42 // Max Buffer Size: 6
43 //
44 // Records:
45 // Infos: 12
46 // Eras: 15
47 // Policies: 8
48 // Rules: 32
49 //
50 // Memory (8-bits):
51 // Context: 16
52 // Rules: 288
53 // Policies: 24
54 // Eras: 165
55 // Zones: 143
56 // Links: 13
57 // Registry: 24
58 // Formats: 27
59 // Letters: 11
60 // Fragments: 0
61 // Names: 202 (original: 202)
62 // TOTAL: 913
63 //
64 // Memory (32-bits):
65 // Context: 24
66 // Rules: 384
67 // Policies: 64
68 // Eras: 240
69 // Zones: 264
70 // Links: 24
71 // Registry: 48
72 // Formats: 27
73 // Letters: 17
74 // Fragments: 0
75 // Names: 202 (original: 202)
76 // TOTAL: 1294
77 //
78 // DO NOT EDIT
79 
80 #include <zoneinfo/compat.h>
81 #include "zone_policies.h"
82 #include "zone_infos.h"
83 
84 namespace ace_time {
85 namespace testingzonedb {
86 
87 //---------------------------------------------------------------------------
88 // ZoneContext
89 //---------------------------------------------------------------------------
90 
91 static const char kVersionString[] ACE_TIME_PROGMEM = "2025b";
92 const __FlashStringHelper* const kTzDatabaseVersion =
93  (const __FlashStringHelper*) kVersionString;
94 
95 
96 const char* const kFragments[] ACE_TIME_PROGMEM = {
97  nullptr, // '\x00' cannot exist
98 
99 };
100 
101 static const char kLetter0[] ACE_TIME_PROGMEM = "";
102 static const char kLetter1[] ACE_TIME_PROGMEM = "D";
103 static const char kLetter2[] ACE_TIME_PROGMEM = "S";
104 
105 const char* const kLetters[] ACE_TIME_PROGMEM = {
106  kLetter0, // ""
107  kLetter1, // "D"
108  kLetter2, // "S"
109 
110 };
111 
112 const basic::Info::ZoneContext kZoneContext ACE_TIME_PROGMEM = {
113  1980 /*startYear*/,
114  2200 /*untilYear*/,
115  1980 /*startYearAccurate*/,
116  32767 /*untilYearAccurate*/,
117  2100 /*baseYear*/,
118  6 /*maxTransitions*/,
119  kVersionString /*tzVersion*/,
120  1 /*numFragments*/,
121  3 /*numLetters*/,
122  kFragments /*fragments*/,
123  kLetters /*letters*/,
124 };
125 
126 //---------------------------------------------------------------------------
127 // Zones: 11
128 // Eras: 15
129 //---------------------------------------------------------------------------
130 
131 //---------------------------------------------------------------------------
132 // Zone name: Africa/Johannesburg
133 // Eras: 1
134 //---------------------------------------------------------------------------
135 
136 static const basic::Info::ZoneEra kZoneEraAfrica_Johannesburg[] ACE_TIME_PROGMEM = {
137  // 2:00 SA SAST
138  {
139  &kZonePolicySA /*zonePolicy*/,
140  "SAST" /*format*/,
141  8 /*offsetCode*/,
142  4 /*deltaCode (((offsetMinute=0) << 4) + ((deltaMinutes=0)/15 + 4))*/,
143  127 /*untilYearTiny*/,
144  1 /*untilMonth*/,
145  1 /*untilDay*/,
146  0 /*untilTimeCode*/,
147  0 /*untilTimeModifier (kSuffixW + minute=0)*/,
148  },
149 
150 };
151 
152 static const char kZoneNameAfrica_Johannesburg[] ACE_TIME_PROGMEM = "Africa/Johannesburg";
153 
154 const basic::Info::ZoneInfo kZoneAfrica_Johannesburg ACE_TIME_PROGMEM = {
155  kZoneNameAfrica_Johannesburg /*name*/,
156  0xd5d157a0 /*zoneId*/,
157  &kZoneContext /*zoneContext*/,
158  1 /*numEras*/,
159  kZoneEraAfrica_Johannesburg /*eras*/,
160  nullptr /*targetInfo*/,
161 };
162 
163 //---------------------------------------------------------------------------
164 // Zone name: America/Chicago
165 // Eras: 1
166 //---------------------------------------------------------------------------
167 
168 static const basic::Info::ZoneEra kZoneEraAmerica_Chicago[] ACE_TIME_PROGMEM = {
169  // -6:00 US C%sT
170  {
171  &kZonePolicyUS /*zonePolicy*/,
172  "C%T" /*format*/,
173  -24 /*offsetCode*/,
174  4 /*deltaCode (((offsetMinute=0) << 4) + ((deltaMinutes=0)/15 + 4))*/,
175  127 /*untilYearTiny*/,
176  1 /*untilMonth*/,
177  1 /*untilDay*/,
178  0 /*untilTimeCode*/,
179  0 /*untilTimeModifier (kSuffixW + minute=0)*/,
180  },
181 
182 };
183 
184 static const char kZoneNameAmerica_Chicago[] ACE_TIME_PROGMEM = "America/Chicago";
185 
186 const basic::Info::ZoneInfo kZoneAmerica_Chicago ACE_TIME_PROGMEM = {
187  kZoneNameAmerica_Chicago /*name*/,
188  0x4b92b5d4 /*zoneId*/,
189  &kZoneContext /*zoneContext*/,
190  1 /*numEras*/,
191  kZoneEraAmerica_Chicago /*eras*/,
192  nullptr /*targetInfo*/,
193 };
194 
195 //---------------------------------------------------------------------------
196 // Zone name: America/Denver
197 // Eras: 1
198 //---------------------------------------------------------------------------
199 
200 static const basic::Info::ZoneEra kZoneEraAmerica_Denver[] ACE_TIME_PROGMEM = {
201  // -7:00 US M%sT
202  {
203  &kZonePolicyUS /*zonePolicy*/,
204  "M%T" /*format*/,
205  -28 /*offsetCode*/,
206  4 /*deltaCode (((offsetMinute=0) << 4) + ((deltaMinutes=0)/15 + 4))*/,
207  127 /*untilYearTiny*/,
208  1 /*untilMonth*/,
209  1 /*untilDay*/,
210  0 /*untilTimeCode*/,
211  0 /*untilTimeModifier (kSuffixW + minute=0)*/,
212  },
213 
214 };
215 
216 static const char kZoneNameAmerica_Denver[] ACE_TIME_PROGMEM = "America/Denver";
217 
218 const basic::Info::ZoneInfo kZoneAmerica_Denver ACE_TIME_PROGMEM = {
219  kZoneNameAmerica_Denver /*name*/,
220  0x97d10b2a /*zoneId*/,
221  &kZoneContext /*zoneContext*/,
222  1 /*numEras*/,
223  kZoneEraAmerica_Denver /*eras*/,
224  nullptr /*targetInfo*/,
225 };
226 
227 //---------------------------------------------------------------------------
228 // Zone name: America/Edmonton
229 // Eras: 2
230 //---------------------------------------------------------------------------
231 
232 static const basic::Info::ZoneEra kZoneEraAmerica_Edmonton[] ACE_TIME_PROGMEM = {
233  // -7:00 Edm M%sT 1987
234  {
235  &kZonePolicyEdm /*zonePolicy*/,
236  "M%T" /*format*/,
237  -28 /*offsetCode*/,
238  4 /*deltaCode (((offsetMinute=0) << 4) + ((deltaMinutes=0)/15 + 4))*/,
239  -113 /*untilYearTiny*/,
240  1 /*untilMonth*/,
241  1 /*untilDay*/,
242  0 /*untilTimeCode*/,
243  0 /*untilTimeModifier (kSuffixW + minute=0)*/,
244  },
245  // -7:00 Canada M%sT
246  {
247  &kZonePolicyCanada /*zonePolicy*/,
248  "M%T" /*format*/,
249  -28 /*offsetCode*/,
250  4 /*deltaCode (((offsetMinute=0) << 4) + ((deltaMinutes=0)/15 + 4))*/,
251  127 /*untilYearTiny*/,
252  1 /*untilMonth*/,
253  1 /*untilDay*/,
254  0 /*untilTimeCode*/,
255  0 /*untilTimeModifier (kSuffixW + minute=0)*/,
256  },
257 
258 };
259 
260 static const char kZoneNameAmerica_Edmonton[] ACE_TIME_PROGMEM = "America/Edmonton";
261 
262 const basic::Info::ZoneInfo kZoneAmerica_Edmonton ACE_TIME_PROGMEM = {
263  kZoneNameAmerica_Edmonton /*name*/,
264  0x6cb9484a /*zoneId*/,
265  &kZoneContext /*zoneContext*/,
266  2 /*numEras*/,
267  kZoneEraAmerica_Edmonton /*eras*/,
268  nullptr /*targetInfo*/,
269 };
270 
271 //---------------------------------------------------------------------------
272 // Zone name: America/Los_Angeles
273 // Eras: 1
274 //---------------------------------------------------------------------------
275 
276 static const basic::Info::ZoneEra kZoneEraAmerica_Los_Angeles[] ACE_TIME_PROGMEM = {
277  // -8:00 US P%sT
278  {
279  &kZonePolicyUS /*zonePolicy*/,
280  "P%T" /*format*/,
281  -32 /*offsetCode*/,
282  4 /*deltaCode (((offsetMinute=0) << 4) + ((deltaMinutes=0)/15 + 4))*/,
283  127 /*untilYearTiny*/,
284  1 /*untilMonth*/,
285  1 /*untilDay*/,
286  0 /*untilTimeCode*/,
287  0 /*untilTimeModifier (kSuffixW + minute=0)*/,
288  },
289 
290 };
291 
292 static const char kZoneNameAmerica_Los_Angeles[] ACE_TIME_PROGMEM = "America/Los_Angeles";
293 
294 const basic::Info::ZoneInfo kZoneAmerica_Los_Angeles ACE_TIME_PROGMEM = {
295  kZoneNameAmerica_Los_Angeles /*name*/,
296  0xb7f7e8f2 /*zoneId*/,
297  &kZoneContext /*zoneContext*/,
298  1 /*numEras*/,
299  kZoneEraAmerica_Los_Angeles /*eras*/,
300  nullptr /*targetInfo*/,
301 };
302 
303 //---------------------------------------------------------------------------
304 // Zone name: America/New_York
305 // Eras: 1
306 //---------------------------------------------------------------------------
307 
308 static const basic::Info::ZoneEra kZoneEraAmerica_New_York[] ACE_TIME_PROGMEM = {
309  // -5:00 US E%sT
310  {
311  &kZonePolicyUS /*zonePolicy*/,
312  "E%T" /*format*/,
313  -20 /*offsetCode*/,
314  4 /*deltaCode (((offsetMinute=0) << 4) + ((deltaMinutes=0)/15 + 4))*/,
315  127 /*untilYearTiny*/,
316  1 /*untilMonth*/,
317  1 /*untilDay*/,
318  0 /*untilTimeCode*/,
319  0 /*untilTimeModifier (kSuffixW + minute=0)*/,
320  },
321 
322 };
323 
324 static const char kZoneNameAmerica_New_York[] ACE_TIME_PROGMEM = "America/New_York";
325 
326 const basic::Info::ZoneInfo kZoneAmerica_New_York ACE_TIME_PROGMEM = {
327  kZoneNameAmerica_New_York /*name*/,
328  0x1e2a7654 /*zoneId*/,
329  &kZoneContext /*zoneContext*/,
330  1 /*numEras*/,
331  kZoneEraAmerica_New_York /*eras*/,
332  nullptr /*targetInfo*/,
333 };
334 
335 //---------------------------------------------------------------------------
336 // Zone name: America/Toronto
337 // Eras: 1
338 //---------------------------------------------------------------------------
339 
340 static const basic::Info::ZoneEra kZoneEraAmerica_Toronto[] ACE_TIME_PROGMEM = {
341  // -5:00 Canada E%sT
342  {
343  &kZonePolicyCanada /*zonePolicy*/,
344  "E%T" /*format*/,
345  -20 /*offsetCode*/,
346  4 /*deltaCode (((offsetMinute=0) << 4) + ((deltaMinutes=0)/15 + 4))*/,
347  127 /*untilYearTiny*/,
348  1 /*untilMonth*/,
349  1 /*untilDay*/,
350  0 /*untilTimeCode*/,
351  0 /*untilTimeModifier (kSuffixW + minute=0)*/,
352  },
353 
354 };
355 
356 static const char kZoneNameAmerica_Toronto[] ACE_TIME_PROGMEM = "America/Toronto";
357 
358 const basic::Info::ZoneInfo kZoneAmerica_Toronto ACE_TIME_PROGMEM = {
359  kZoneNameAmerica_Toronto /*name*/,
360  0x792e851b /*zoneId*/,
361  &kZoneContext /*zoneContext*/,
362  1 /*numEras*/,
363  kZoneEraAmerica_Toronto /*eras*/,
364  nullptr /*targetInfo*/,
365 };
366 
367 //---------------------------------------------------------------------------
368 // Zone name: America/Vancouver
369 // Eras: 2
370 //---------------------------------------------------------------------------
371 
372 static const basic::Info::ZoneEra kZoneEraAmerica_Vancouver[] ACE_TIME_PROGMEM = {
373  // -8:00 Vanc P%sT 1987
374  {
375  &kZonePolicyVanc /*zonePolicy*/,
376  "P%T" /*format*/,
377  -32 /*offsetCode*/,
378  4 /*deltaCode (((offsetMinute=0) << 4) + ((deltaMinutes=0)/15 + 4))*/,
379  -113 /*untilYearTiny*/,
380  1 /*untilMonth*/,
381  1 /*untilDay*/,
382  0 /*untilTimeCode*/,
383  0 /*untilTimeModifier (kSuffixW + minute=0)*/,
384  },
385  // -8:00 Canada P%sT
386  {
387  &kZonePolicyCanada /*zonePolicy*/,
388  "P%T" /*format*/,
389  -32 /*offsetCode*/,
390  4 /*deltaCode (((offsetMinute=0) << 4) + ((deltaMinutes=0)/15 + 4))*/,
391  127 /*untilYearTiny*/,
392  1 /*untilMonth*/,
393  1 /*untilDay*/,
394  0 /*untilTimeCode*/,
395  0 /*untilTimeModifier (kSuffixW + minute=0)*/,
396  },
397 
398 };
399 
400 static const char kZoneNameAmerica_Vancouver[] ACE_TIME_PROGMEM = "America/Vancouver";
401 
402 const basic::Info::ZoneInfo kZoneAmerica_Vancouver ACE_TIME_PROGMEM = {
403  kZoneNameAmerica_Vancouver /*name*/,
404  0x2c6f6b1f /*zoneId*/,
405  &kZoneContext /*zoneContext*/,
406  2 /*numEras*/,
407  kZoneEraAmerica_Vancouver /*eras*/,
408  nullptr /*targetInfo*/,
409 };
410 
411 //---------------------------------------------------------------------------
412 // Zone name: America/Winnipeg
413 // Eras: 2
414 //---------------------------------------------------------------------------
415 
416 static const basic::Info::ZoneEra kZoneEraAmerica_Winnipeg[] ACE_TIME_PROGMEM = {
417  // -6:00 Winn C%sT 2006
418  {
419  &kZonePolicyWinn /*zonePolicy*/,
420  "C%T" /*format*/,
421  -24 /*offsetCode*/,
422  4 /*deltaCode (((offsetMinute=0) << 4) + ((deltaMinutes=0)/15 + 4))*/,
423  -94 /*untilYearTiny*/,
424  1 /*untilMonth*/,
425  1 /*untilDay*/,
426  0 /*untilTimeCode*/,
427  0 /*untilTimeModifier (kSuffixW + minute=0)*/,
428  },
429  // -6:00 Canada C%sT
430  {
431  &kZonePolicyCanada /*zonePolicy*/,
432  "C%T" /*format*/,
433  -24 /*offsetCode*/,
434  4 /*deltaCode (((offsetMinute=0) << 4) + ((deltaMinutes=0)/15 + 4))*/,
435  127 /*untilYearTiny*/,
436  1 /*untilMonth*/,
437  1 /*untilDay*/,
438  0 /*untilTimeCode*/,
439  0 /*untilTimeModifier (kSuffixW + minute=0)*/,
440  },
441 
442 };
443 
444 static const char kZoneNameAmerica_Winnipeg[] ACE_TIME_PROGMEM = "America/Winnipeg";
445 
446 const basic::Info::ZoneInfo kZoneAmerica_Winnipeg ACE_TIME_PROGMEM = {
447  kZoneNameAmerica_Winnipeg /*name*/,
448  0x8c7dafc7 /*zoneId*/,
449  &kZoneContext /*zoneContext*/,
450  2 /*numEras*/,
451  kZoneEraAmerica_Winnipeg /*eras*/,
452  nullptr /*targetInfo*/,
453 };
454 
455 //---------------------------------------------------------------------------
456 // Zone name: Australia/Darwin
457 // Eras: 1
458 //---------------------------------------------------------------------------
459 
460 static const basic::Info::ZoneEra kZoneEraAustralia_Darwin[] ACE_TIME_PROGMEM = {
461  // 9:30 Aus AC%sT
462  {
463  &kZonePolicyAus /*zonePolicy*/,
464  "AC%T" /*format*/,
465  38 /*offsetCode*/,
466  4 /*deltaCode (((offsetMinute=0) << 4) + ((deltaMinutes=0)/15 + 4))*/,
467  127 /*untilYearTiny*/,
468  1 /*untilMonth*/,
469  1 /*untilDay*/,
470  0 /*untilTimeCode*/,
471  0 /*untilTimeModifier (kSuffixW + minute=0)*/,
472  },
473 
474 };
475 
476 static const char kZoneNameAustralia_Darwin[] ACE_TIME_PROGMEM = "Australia/Darwin";
477 
478 const basic::Info::ZoneInfo kZoneAustralia_Darwin ACE_TIME_PROGMEM = {
479  kZoneNameAustralia_Darwin /*name*/,
480  0x2876bdff /*zoneId*/,
481  &kZoneContext /*zoneContext*/,
482  1 /*numEras*/,
483  kZoneEraAustralia_Darwin /*eras*/,
484  nullptr /*targetInfo*/,
485 };
486 
487 //---------------------------------------------------------------------------
488 // Zone name: Pacific/Galapagos
489 // Eras: 2
490 //---------------------------------------------------------------------------
491 
492 static const basic::Info::ZoneEra kZoneEraPacific_Galapagos[] ACE_TIME_PROGMEM = {
493  // -5:00 - %z 1986
494  {
495  nullptr /*zonePolicy*/,
496  "" /*format*/,
497  -20 /*offsetCode*/,
498  4 /*deltaCode (((offsetMinute=0) << 4) + ((deltaMinutes=0)/15 + 4))*/,
499  -114 /*untilYearTiny*/,
500  1 /*untilMonth*/,
501  1 /*untilDay*/,
502  0 /*untilTimeCode*/,
503  0 /*untilTimeModifier (kSuffixW + minute=0)*/,
504  },
505  // -6:00 Ecuador %z
506  {
507  &kZonePolicyEcuador /*zonePolicy*/,
508  "" /*format*/,
509  -24 /*offsetCode*/,
510  4 /*deltaCode (((offsetMinute=0) << 4) + ((deltaMinutes=0)/15 + 4))*/,
511  127 /*untilYearTiny*/,
512  1 /*untilMonth*/,
513  1 /*untilDay*/,
514  0 /*untilTimeCode*/,
515  0 /*untilTimeModifier (kSuffixW + minute=0)*/,
516  },
517 
518 };
519 
520 static const char kZoneNamePacific_Galapagos[] ACE_TIME_PROGMEM = "Pacific/Galapagos";
521 
522 const basic::Info::ZoneInfo kZonePacific_Galapagos ACE_TIME_PROGMEM = {
523  kZoneNamePacific_Galapagos /*name*/,
524  0xa952f752 /*zoneId*/,
525  &kZoneContext /*zoneContext*/,
526  2 /*numEras*/,
527  kZoneEraPacific_Galapagos /*eras*/,
528  nullptr /*targetInfo*/,
529 };
530 
531 
532 
533 //---------------------------------------------------------------------------
534 // Links: 1
535 //---------------------------------------------------------------------------
536 
537 //---------------------------------------------------------------------------
538 // Link name: US/Pacific -> America/Los_Angeles
539 //---------------------------------------------------------------------------
540 
541 static const char kZoneNameUS_Pacific[] ACE_TIME_PROGMEM = "US/Pacific";
542 
543 const basic::Info::ZoneInfo kZoneUS_Pacific ACE_TIME_PROGMEM = {
544  kZoneNameUS_Pacific /*name*/,
545  0xa950f6ab /*zoneId*/,
546  &kZoneContext /*zoneContext*/,
547  1 /*numEras*/,
548  kZoneEraAmerica_Los_Angeles /*eras*/,
549  &kZoneAmerica_Los_Angeles /*targetInfo*/,
550 };
551 
552 
553 }
554 }
Macros and definitions that provide a consistency layer among the various Arduino boards for compatib...