1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487 | with Ada.Locales;
-- ****h* ISO/Countries
-- DESCRIPTION
-- Implimentation of ISO 3166-1 (Country Codes).
-- SOURCE
package ISO.Countries is
-- ****
-- ****t* Countries/ISO.Countries.Alpha2_Code
-- DESCRIPTION
-- The two-letter country code defined by ISO 3166-1.
-- DERIVED FROM
-- Ada.Locales.Country_Code
-- SOURCE
subtype Alpha2_Code is String (1 .. 2)
with Dynamic_Predicate => Alpha2_Code in
"AF" | "AL" | "DZ" | "AS" | "AD" | "AO" | "AI" | "AQ" | "AG" | "AR" | "AM" | "AW" | "AU" | "AT" | "AZ" | "BS" | "BH" | "BD" | "BB" | "BY" | "BE" | "BZ" | "BJ" | "BM" | "BT" | "BO" | "BQ" | "BA" | "BW" | "BV" | "BR" | "IO" | "BN" | "BG" | "BF" | "BI" | "CV" | "KH" | "CM" | "CA" | "KY" | "CF" | "TD" | "CL" | "CN" | "CX" | "CC" | "CO" | "KM" | "CD" | "CG" | "CK" | "CR" | "HR" | "CU" | "CW" | "CY" | "CZ" | "CI" | "DK" | "DJ" | "DM" | "DO" | "EC" | "EG" | "SV" | "GQ" | "ER" | "EE" | "SZ" | "ET" | "FK" | "FO" | "FJ" | "FI" | "FR" | "GF" | "PF" | "TF" | "GA" | "GM" | "GE" | "DE" | "GH" | "GI" | "GR" | "GL" | "GD" | "GP" | "GU" | "GT" | "GG" | "GN" | "GW" | "GY" | "HT" | "HM" | "VA" | "HN" | "HK" | "HU" | "IS" | "IN" | "ID" | "IR" | "IQ" | "IE" | "IM" | "IL" | "IT" | "JM" | "JP" | "JE" | "JO" | "KZ" | "KE" | "KI" | "KP" | "KR" | "KW" | "KG" | "LA" | "LV" | "LB" | "LS" | "LR" | "LY" | "LI" | "LT" | "LU" | "MO" | "MG" | "MW" | "MY" | "MV" | "ML" | "MT" | "MH" | "MQ" | "MR" | "MU" | "YT" | "MX" | "FM" | "MD" | "MC" | "MN" | "ME" | "MS" | "MA" | "MZ" | "MM" | "NA" | "NR" | "NP" | "NL" | "NC" | "NZ" | "NI" | "NE" | "NG" | "NU" | "NF" | "MK" | "MP" | "NO" | "OM" | "PK" | "PW" | "PS" | "PA" | "PG" | "PY" | "PE" | "PH" | "PN" | "PL" | "PT" | "PR" | "QA" | "RO" | "RU" | "RW" | "RE" | "BL" | "SH" | "KN" | "LC" | "MF" | "PM" | "VC" | "WS" | "SM" | "ST" | "SA" | "SN" | "RS" | "SC" | "SL" | "SG" | "SX" | "SK" | "SI" | "SB" | "SO" | "ZA" | "GS" | "SS" | "ES" | "LK" | "SD" | "SR" | "SJ" | "SE" | "CH" | "SY" | "TW" | "TJ" | "TZ" | "TH" | "TL" | "TG" | "TK" | "TO" | "TT" | "TN" | "TM" | "TC" | "TV" | "TR" | "UG" | "UA" | "AE" | "GB" | "UM" | "US" | "UY" | "UZ" | "VU" | "VE" | "VN" | "VG" | "VI" | "WF" | "EH" | "YE" | "ZM" | "ZW" | "AX" | "ZZ";
-- ****
-- ****t* Countries/ISO.Countries.Alpha3_Code
-- DESCRIPTION
-- The three-letter country code defined by ISO 3166-1.
-- DERIVED FROM
-- String
-- SOURCE
subtype Alpha3_Code is String (1 .. 3)
with Dynamic_Predicate => Alpha3_Code in
"AFG" | "ALB" | "DZA" | "ASM" | "AND" | "AGO" | "AIA" | "ATA" | "ATG" | "ARG" | "ARM" | "ABW" | "AUS" | "AUT" | "AZE" | "BHS" | "BHR" | "BGD" | "BRB" | "BLR" | "BEL" | "BLZ" | "BEN" | "BMU" | "BTN" | "BOL" | "BES" | "BIH" | "BWA" | "BVT" | "BRA" | "IOT" | "BRN" | "BGR" | "BFA" | "BDI" | "CPV" | "KHM" | "CMR" | "CAN" | "CYM" | "CAF" | "TCD" | "CHL" | "CHN" | "CXR" | "CCK" | "COL" | "COM" | "COD" | "COG" | "COK" | "CRI" | "HRV" | "CUB" | "CUW" | "CYP" | "CZE" | "CIV" | "DNK" | "DJI" | "DMA" | "DOM" | "ECU" | "EGY" | "SLV" | "GNQ" | "ERI" | "EST" | "SWZ" | "ETH" | "FLK" | "FRO" | "FJI" | "FIN" | "FRA" | "GUF" | "PYF" | "ATF" | "GAB" | "GMB" | "GEO" | "DEU" | "GHA" | "GIB" | "GRC" | "GRL" | "GRD" | "GLP" | "GUM" | "GTM" | "GGY" | "GIN" | "GNB" | "GUY" | "HTI" | "HMD" | "VAT" | "HND" | "HKG" | "HUN" | "ISL" | "IND" | "IDN" | "IRN" | "IRQ" | "IRL" | "IMN" | "ISR" | "ITA" | "JAM" | "JPN" | "JEY" | "JOR" | "KAZ" | "KEN" | "KIR" | "PRK" | "KOR" | "KWT" | "KGZ" | "LAO" | "LVA" | "LBN" | "LSO" | "LBR" | "LBY" | "LIE" | "LTU" | "LUX" | "MAC" | "MDG" | "MWI" | "MYS" | "MDV" | "MLI" | "MLT" | "MHL" | "MTQ" | "MRT" | "MUS" | "MYT" | "MEX" | "FSM" | "MDA" | "MCO" | "MNG" | "MNE" | "MSR" | "MAR" | "MOZ" | "MMR" | "NAM" | "NRU" | "NPL" | "NLD" | "NCL" | "NZL" | "NIC" | "NER" | "NGA" | "NIU" | "NFK" | "MKD" | "MNP" | "NOR" | "OMN" | "PAK" | "PLW" | "PSE" | "PAN" | "PNG" | "PRY" | "PER" | "PHL" | "PCN" | "POL" | "PRT" | "PRI" | "QAT" | "ROU" | "RUS" | "RWA" | "REU" | "BLM" | "SHN" | "KNA" | "LCA" | "MAF" | "SPM" | "VCT" | "WSM" | "SMR" | "STP" | "SAU" | "SEN" | "SRB" | "SYC" | "SLE" | "SGP" | "SXM" | "SVK" | "SVN" | "SLB" | "SOM" | "ZAF" | "SGS" | "SSD" | "ESP" | "LKA" | "SDN" | "SUR" | "SJM" | "SWE" | "CHE" | "SYR" | "TWN" | "TJK" | "TZA" | "THA" | "TLS" | "TGO" | "TKL" | "TON" | "TTO" | "TUN" | "TKM" | "TCA" | "TUV" | "TUR" | "UGA" | "UKR" | "ARE" | "GBR" | "UMI" | "USA" | "URY" | "UZB" | "VUT" | "VEN" | "VNM" | "VGB" | "VIR" | "WLF" | "ESH" | "YEM" | "ZMB" | "ZWE" | "ALA" | "ZZZ";
-- ****
-- ****t* Countries/ISO.Countries.Numeric_Code
-- DESCRIPTION
-- The numeric country code defined by ISO 3166-1.
-- DERIVED FROM
-- Natural
-- SOURCE
subtype Numeric_Code is Natural
with Dynamic_Predicate => Numeric_Code in
004 | 008 | 012 | 016 | 020 | 024 | 660 | 010 | 028 | 032 | 051 | 533 | 036 | 040 | 031 | 044 | 048 | 050 | 052 | 112 | 056 | 084 | 204 | 060 | 064 | 068 | 535 | 070 | 072 | 074 | 076 | 086 | 096 | 100 | 854 | 108 | 132 | 116 | 120 | 124 | 136 | 140 | 148 | 152 | 156 | 162 | 166 | 170 | 174 | 180 | 178 | 184 | 188 | 191 | 192 | 531 | 196 | 203 | 384 | 208 | 262 | 212 | 214 | 218 | 818 | 222 | 226 | 232 | 233 | 748 | 231 | 238 | 234 | 242 | 246 | 250 | 254 | 258 | 260 | 266 | 270 | 268 | 276 | 288 | 292 | 300 | 304 | 308 | 312 | 316 | 320 | 831 | 324 | 624 | 328 | 332 | 334 | 336 | 340 | 344 | 348 | 352 | 356 | 360 | 364 | 368 | 372 | 833 | 376 | 380 | 388 | 392 | 832 | 400 | 398 | 404 | 296 | 408 | 410 | 414 | 417 | 418 | 428 | 422 | 426 | 430 | 434 | 438 | 440 | 442 | 446 | 450 | 454 | 458 | 462 | 466 | 470 | 584 | 474 | 478 | 480 | 175 | 484 | 583 | 498 | 492 | 496 | 499 | 500 | 504 | 508 | 104 | 516 | 520 | 524 | 528 | 540 | 554 | 558 | 562 | 566 | 570 | 574 | 807 | 580 | 578 | 512 | 586 | 585 | 275 | 591 | 598 | 600 | 604 | 608 | 612 | 616 | 620 | 630 | 634 | 642 | 643 | 646 | 638 | 652 | 654 | 659 | 662 | 663 | 666 | 670 | 882 | 674 | 678 | 682 | 686 | 688 | 690 | 694 | 702 | 534 | 703 | 705 | 090 | 706 | 710 | 239 | 728 | 724 | 144 | 729 | 740 | 744 | 752 | 756 | 760 | 158 | 762 | 834 | 764 | 626 | 768 | 772 | 776 | 780 | 788 | 795 | 796 | 798 | 792 | 800 | 804 | 784 | 826 | 581 | 840 | 858 | 860 | 548 | 862 | 704 | 092 | 850 | 876 | 732 | 887 | 894 | 716 | 248 | 0;
-- ****
-- ****t* Countries/ISO.Countries.Country_Key
-- DESCRIPTION
-- An enumeration of every iso 3166 alpha2 country code.
-- Each code starts with "C_", to prevent any enumeration conlficting
-- with a reserved word. So you can cast any alpha2 to Country_Key by
-- doing "Country_Key'Value ("C_" & Alpha2)"
-- EXAMPLE
-- My_Key : Country_Key := C_US;
-- SOURCE
type Country_Key is (
C_AF, -- Afghanistan
C_AL, -- Albania
C_DZ, -- Algeria
C_AS, -- American Samoa
C_AD, -- Andorra
C_AO, -- Angola
C_AI, -- Anguilla
C_AQ, -- Antarctica
C_AG, -- Antigua and Barbuda
C_AR, -- Argentina
C_AM, -- Armenia
C_AW, -- Aruba
C_AU, -- Australia
C_AT, -- Austria
C_AZ, -- Azerbaijan
C_BS, -- Bahamas (the)
C_BH, -- Bahrain
C_BD, -- Bangladesh
C_BB, -- Barbados
C_BY, -- Belarus
C_BE, -- Belgium
C_BZ, -- Belize
C_BJ, -- Benin
C_BM, -- Bermuda
C_BT, -- Bhutan
C_BO, -- Bolivia (Plurinational State of)
C_BQ, -- Bonaire, Sint Eustatius and Saba
C_BA, -- Bosnia and Herzegovina
C_BW, -- Botswana
C_BV, -- Bouvet Island
C_BR, -- Brazil
C_IO, -- British Indian Ocean Territory (the)
C_BN, -- Brunei Darussalam
C_BG, -- Bulgaria
C_BF, -- Burkina Faso
C_BI, -- Burundi
C_CV, -- Cabo Verde
C_KH, -- Cambodia
C_CM, -- Cameroon
C_CA, -- Canada
C_KY, -- Cayman Islands (the)
C_CF, -- Central African Republic (the)
C_TD, -- Chad
C_CL, -- Chile
C_CN, -- China
C_CX, -- Christmas Island
C_CC, -- Cocos (Keeling) Islands (the)
C_CO, -- Colombia
C_KM, -- Comoros (the)
C_CD, -- Congo (the Democratic Republic of the)
C_CG, -- Congo (the)
C_CK, -- Cook Islands (the)
C_CR, -- Costa Rica
C_HR, -- Croatia
C_CU, -- Cuba
C_CW, -- Curaçao
C_CY, -- Cyprus
C_CZ, -- Czechia
C_CI, -- Côte d'Ivoire
C_DK, -- Denmark
C_DJ, -- Djibouti
C_DM, -- Dominica
C_DO, -- Dominican Republic (the)
C_EC, -- Ecuador
C_EG, -- Egypt
C_SV, -- El Salvador
C_GQ, -- Equatorial Guinea
C_ER, -- Eritrea
C_EE, -- Estonia
C_SZ, -- Eswatini
C_ET, -- Ethiopia
C_FK, -- Falkland Islands (the) [Malvinas]
C_FO, -- Faroe Islands (the)
C_FJ, -- Fiji
C_FI, -- Finland
C_FR, -- France
C_GF, -- French Guiana
C_PF, -- French Polynesia
C_TF, -- French Southern Territories (the)
C_GA, -- Gabon
C_GM, -- Gambia (the)
C_GE, -- Georgia
C_DE, -- Germany
C_GH, -- Ghana
C_GI, -- Gibraltar
C_GR, -- Greece
C_GL, -- Greenland
C_GD, -- Grenada
C_GP, -- Guadeloupe
C_GU, -- Guam
C_GT, -- Guatemala
C_GG, -- Guernsey
C_GN, -- Guinea
C_GW, -- Guinea-Bissau
C_GY, -- Guyana
C_HT, -- Haiti
C_HM, -- Heard Island and McDonald Islands
C_VA, -- Holy See (the)
C_HN, -- Honduras
C_HK, -- Hong Kong
C_HU, -- Hungary
C_IS, -- Iceland
C_IN, -- India
C_ID, -- Indonesia
C_IR, -- Iran (Islamic Republic of)
C_IQ, -- Iraq
C_IE, -- Ireland
C_IM, -- Isle of Man
C_IL, -- Israel
C_IT, -- Italy
C_JM, -- Jamaica
C_JP, -- Japan
C_JE, -- Jersey
C_JO, -- Jordan
C_KZ, -- Kazakhstan
C_KE, -- Kenya
C_KI, -- Kiribati
C_KP, -- Korea (the Democratic People's Republic of)
C_KR, -- Korea (the Republic of)
C_KW, -- Kuwait
C_KG, -- Kyrgyzstan
C_LA, -- Lao People's Democratic Republic (the)
C_LV, -- Latvia
C_LB, -- Lebanon
C_LS, -- Lesotho
C_LR, -- Liberia
C_LY, -- Libya
C_LI, -- Liechtenstein
C_LT, -- Lithuania
C_LU, -- Luxembourg
C_MO, -- Macao
C_MG, -- Madagascar
C_MW, -- Malawi
C_MY, -- Malaysia
C_MV, -- Maldives
C_ML, -- Mali
C_MT, -- Malta
C_MH, -- Marshall Islands (the)
C_MQ, -- Martinique
C_MR, -- Mauritania
C_MU, -- Mauritius
C_YT, -- Mayotte
C_MX, -- Mexico
C_FM, -- Micronesia (Federated States of)
C_MD, -- Moldova (the Republic of)
C_MC, -- Monaco
C_MN, -- Mongolia
C_ME, -- Montenegro
C_MS, -- Montserrat
C_MA, -- Morocco
C_MZ, -- Mozambique
C_MM, -- Myanmar
C_NA, -- Namibia
C_NR, -- Nauru
C_NP, -- Nepal
C_NL, -- Netherlands (Kingdom of the)
C_NC, -- New Caledonia
C_NZ, -- New Zealand
C_NI, -- Nicaragua
C_NE, -- Niger (the)
C_NG, -- Nigeria
C_NU, -- Niue
C_NF, -- Norfolk Island
C_MK, -- North Macedonia
C_MP, -- Northern Mariana Islands (the)
C_NO, -- Norway
C_OM, -- Oman
C_PK, -- Pakistan
C_PW, -- Palau
C_PS, -- Palestine, State of
C_PA, -- Panama
C_PG, -- Papua New Guinea
C_PY, -- Paraguay
C_PE, -- Peru
C_PH, -- Philippines (the)
C_PN, -- Pitcairn
C_PL, -- Poland
C_PT, -- Portugal
C_PR, -- Puerto Rico
C_QA, -- Qatar
C_RO, -- Romania
C_RU, -- Russian Federation (the)
C_RW, -- Rwanda
C_RE, -- Réunion
C_BL, -- Saint Barthélemy
C_SH, -- Saint Helena, Ascension and Tristan da Cunha
C_KN, -- Saint Kitts and Nevis
C_LC, -- Saint Lucia
C_MF, -- Saint Martin (French part)
C_PM, -- Saint Pierre and Miquelon
C_VC, -- Saint Vincent and the Grenadines
C_WS, -- Samoa
C_SM, -- San Marino
C_ST, -- Sao Tome and Principe
C_SA, -- Saudi Arabia
C_SN, -- Senegal
C_RS, -- Serbia
C_SC, -- Seychelles
C_SL, -- Sierra Leone
C_SG, -- Singapore
C_SX, -- Sint Maarten (Dutch part)
C_SK, -- Slovakia
C_SI, -- Slovenia
C_SB, -- Solomon Islands
C_SO, -- Somalia
C_ZA, -- South Africa
C_GS, -- South Georgia and the South Sandwich Islands
C_SS, -- South Sudan
C_ES, -- Spain
C_LK, -- Sri Lanka
C_SD, -- Sudan (the)
C_SR, -- Suriname
C_SJ, -- Svalbard and Jan Mayen
C_SE, -- Sweden
C_CH, -- Switzerland
C_SY, -- Syrian Arab Republic (the)
C_TW, -- Taiwan (Province of China)
C_TJ, -- Tajikistan
C_TZ, -- Tanzania, the United Republic of
C_TH, -- Thailand
C_TL, -- Timor-Leste
C_TG, -- Togo
C_TK, -- Tokelau
C_TO, -- Tonga
C_TT, -- Trinidad and Tobago
C_TN, -- Tunisia
C_TM, -- Turkmenistan
C_TC, -- Turks and Caicos Islands (the)
C_TV, -- Tuvalu
C_TR, -- Türkiye
C_UG, -- Uganda
C_UA, -- Ukraine
C_AE, -- United Arab Emirates (the)
C_GB, -- United Kingdom of Great Britain and Northern Ireland (the)
C_UM, -- United States Minor Outlying Islands (the)
C_US, -- United States of America (the)
C_UY, -- Uruguay
C_UZ, -- Uzbekistan
C_VU, -- Vanuatu
C_VE, -- Venezuela (Bolivarian Republic of)
C_VN, -- Viet Nam
C_VG, -- Virgin Islands (British)
C_VI, -- Virgin Islands (U.S.)
C_WF, -- Wallis and Futuna
C_EH, -- Western Sahara*
C_YE, -- Yemen
C_ZM, -- Zambia
C_ZW, -- Zimbabwe
C_AX, -- Åland Islands
C_ZZ -- Undefined Country
);
-- ****
-- ****t* Countries/ISO.Countries.Country
-- DESCRIPTION
-- The ISO_3166-1 country to be referenced. When initializing, you can
-- set the key to Country_Key that will be utilizeed one of the functions
-- to access the Country.
-- USAGE
-- My_Country : Country := (C_US); -- This is the USA.
-- METHODS
-- * ISO.Countries.Country/Name
-- * ISO.Countries.Country/Alpha2
-- * ISO.Countries.Country/Alpha3
-- * ISO.Countries.Country/Numeric
-- * ISO.Countries.Country/Country_Code
-- EXAMPLE
-- -- To create a country and initalize it to the USA,
-- -- then reference it like so:
-- My_Country : Country := (C_US); -- This is the USA.
-- To access the country's name, do so like so:
-- My_Country.Name -- "United States of America (The)"
-- SOURCE
type Country is tagged record
Key : Country_Key := C_ZZ;
end record;
-- ****
-- ****m* ISO.Countries.Country/Name
-- FUNCTION
-- Retrieve the name of the provided country.
-- RETURN VALUE
-- String: The ISO 3166 name of the current country.
-- EXAMPLE
-- My_Country : Country := (C_AU);
-- The_Name : String := My_Country.Name; -- Will return "Australia"
-- SOURCE
function Name (This : Country) return String;
-- ****
-- ****m* ISO.Countries.Country/Alpha2
-- FUNCTION
-- Retrieve the two-letter country code of the provided country.
-- RETURN VALUE
-- ISO.Countries.Alpha2_Code: ISO 3166 Alpha2 of the current country.
-- EXAMPLE
-- My_Country : Country := (C_AU);
-- Code : Alhpa2_Code := My_Country.Alpha2; -- Will return "AU"
-- SOURCE
function Alpha2 (This : Country) return Alpha2_Code;
-- ****
-- ****m* ISO.Countries.Country/Alpha3
-- FUNCTION
-- Retrieve the three-letter country code of the provided country.
-- RETURN VALUE
-- ISO.Countries.Alpha3_Code: ISO 3166 Alpha3 of the current country.
-- EXAMPLE
-- My_Country : Country := (C_AU);
-- Code : Alpha3_Code := My_Country.Alpha3; -- Will return "AUS"
-- SOURCE
function Alpha3 (This : Country) return Alpha3_Code;
-- ****
-- ****m* ISO.Countries.Country/Numeric
-- FUNCTION
-- Retrieve the numerical country code of the provided country.
-- RETURN VALUE
-- ISO.Countries.Numeric_Code: ISO 3166 number of the current country.
-- EXAMPLE
-- My_Country : Country := (C_AU);
-- Number : Numeric_Code := My_Country.Numeric; -- Will return 40
-- SOURCE
function Numeric (This : Country) return Numeric_Code;
-- ****
-- ****m* ISO.Countries.Country/Country_Code
-- FUNCTION
-- Retrieve the Ada.Locale.Country_Code of the provided country.
-- RETURN VALUE
-- Ada.Locale.Country_Code: Ada's Country_Code of the current country.
-- EXAMPLE
-- My_Country : Country := (C_AU);
-- Number : Ada.Locale.Country_Code := My_Country.Country_Code; -- "AU"
-- SOURCE
function Country_Code
(This : Country) return Ada.Locales.Country_Code;
-- ****
-- Return all countries
-- function All_Countries return All_Countries;
-- ****f* Countries/ISO.Countries.From_Alpha2
-- FUNCTION
-- Create a country from a provided Alpha2 string.
-- PARAMETERS
-- Code - An alpha2 code, such as "AU" or "US".
-- RETURN VALUE
-- ISO.Countries.Country: Country corresponding to that alpha2 code.
-- EXAMPLE
-- My_Country : Country := From_Alpha2("AU");
-- SOURCE
function From_Alpha2 (Code : Alpha2_Code) return Country;
-- ****
-- ****f* Countries/ISO.Countries.From_Alpha3
-- FUNCTION
-- Create a country from a provided Alpha3 string.
-- PARAMETERS
-- Code - An alpha3 code, such as "AUS" or "USA".
-- RETURN VALUE
-- ISO.Countries.Country: Country corresponding to that alpha3 code.
-- EXAMPLE
-- My_Country : Country := From_Alpha3("AUS");
-- SOURCE
function From_Alpha3 (Code : Alpha3_Code) return Country;
-- ****
-- ****f* Countries/ISO.Countries.From_Numeric
-- FUNCTION
-- Create a country from a provided numerical code string.
-- EXAMPLES
-- My_Country_1 : Country := From_Numeric(40);
-- My_Country_2 : Country := From_Numeric(040);
-- My_Country_3 : Country := From_Numeric("040");
-- PARAMETERS
-- Number - A Numeric Code, either as a string or integer.
-- RETURN VALUE
-- ISO.Countries.Country: Country corresponding to that numerical code.
-- SOURCE
function From_Numeric (Number : Numeric_Code) return Country;
function From_Numeric (Number : String) return Country;
-- ****
-- ****f* Countries/ISO.Countries.From_Country_Code
-- FUNCTION
-- Create a country from a provided numerical code string.
-- PARAMETERS
-- Code - A country code as defined in Ada.Locales.
-- RETURN VALUE
-- ISO.Countries.Country: Country corresponding to that numerical code.
-- USAGE
-- My_Country : Country := From_Country_Code(Ada.Locales.Country);
-- SOURCE
function From_Country_Code (Code : Ada.Locales.Country_Code) return Country;
-- ****
-- ****t* Countries/ISO.Countries.Country_List
-- DESCRIPTION
-- An arbitrary-sized array of countries.
-- USAGE
-- declare
-- My_Countries : Country_List (1 .. 2);
-- begin
-- My_Countries (1) := (Key => C_AU);
-- My_Countries (2) := (Key => C_US);
-- end;
-- SOURCE
type Country_List is array (Positive range <>) of Country;
-- ****
-- ****t* Countries/ISO.Countries.All_Countries
-- DESCRIPTION
-- All of the countries, utilizing the Country_Key as an index.
-- To conserve the stack
-- USAGE
-- My_Countries : constant All_Countries := Init_Countries;
-- US_Name : String := My_Countries (C_US).Name;
-- SOURCE
type All_Countries is array (Country_Key'Range) of Country;
-- ****
-- ****f* Countries/ISO.Countries.Init_Countries
-- FUNCTION
-- Initialize all of the countries in an array.
-- RETURN VALUE
-- ISO.Countries.All_Countries: Array containing all countries.
-- USAGE
-- My_Countries : constant All_Countries := Init_Countries;
-- SOURCE
function Init_Countries return All_Countries;
-- ****
private
function Alpha3_To_Key (Alpha_3 : Alpha3_Code) return Country_Key;
function Numeric_To_Key (Numeric : Numeric_Code) return Country_Key;
end ISO.Countries;
|