291 lines
10 KiB
C
291 lines
10 KiB
C
// Copyright (c) 1998 - 1999 Microsoft Corporation. All Rights Reserved.
|
||
#ifndef __ISO3166_H
|
||
#define __ISO3166_H
|
||
|
||
char DVDToUpper(char x)
|
||
{
|
||
if('a' <= x && x <= 'z') {
|
||
return x - ('a' - 'A');
|
||
} else {
|
||
return x;
|
||
}
|
||
}
|
||
|
||
struct ISO3166
|
||
{
|
||
const char *Code;
|
||
|
||
// access the table as ISO3166::GetCountry()
|
||
static const ISO3166& GetCountry( unsigned i );
|
||
static unsigned GetNumCountries();
|
||
|
||
// creates an ISO code from a two letter string
|
||
static WORD PackCode( const char string[2] )
|
||
{
|
||
return DVDToUpper(string[0])<<8 | DVDToUpper(string[1]);
|
||
}
|
||
|
||
};
|
||
|
||
// ISO3166 country code table
|
||
static const ISO3166 g_Table[] =
|
||
{ // current as of Dec 22, 2000
|
||
{/* "Afghanistan", */ "AF"},
|
||
{/* "Albania", */ "AL"},
|
||
{/* "Algeria", */ "DZ"},
|
||
{/* "American Samoa", */ "AS"},
|
||
{/* "Andorra", */ "AD"},
|
||
{/* "Angola", */ "AO"},
|
||
{/* "Anguilla", */ "AI"},
|
||
{/* "Antarctica", */ "AQ"},
|
||
{/* "Antigua and Barbuda", */ "AG"},
|
||
{/* "Argentina", */ "AR"},
|
||
{/* "Armenia", */ "AM"},
|
||
{/* "Aruba", */ "AW"},
|
||
{/* "Australia", */ "AU"},
|
||
{/* "Austria", */ "AT"},
|
||
{/* "Azerbaijan", */ "AZ"},
|
||
{/* "Bahamas", */ "BS"},
|
||
{/* "Bahrain", */ "BH"},
|
||
{/* "Bangladesh", */ "BD"},
|
||
{/* "Barbados", */ "BB"},
|
||
{/* "Belarus", */ "BY"},
|
||
{/* "Belgium", */ "BE"},
|
||
{/* "Belize", */ "BZ"},
|
||
{/* "Benin", */ "BJ"},
|
||
{/* "Bermuda", */ "BM"},
|
||
{/* "Bhutan", */ "BT"},
|
||
{/* "Bolivia", */ "BO"},
|
||
{/* "Bosnia and Herzegovina", */ "BA"},
|
||
{/* "Botswana", */ "BW"},
|
||
{/* "Bouvet Island", */ "BV"},
|
||
{/* "Brazil", */ "BR"},
|
||
{/* "British Indian Ocean Territory", */ "IO"},
|
||
{/* "Brunei Darussalam", */ "BN"},
|
||
{/* "Bulgaria", */ "BG"},
|
||
{/* "Burkina Faso", */ "BF"},
|
||
{/* "Burundi", */ "BI"},
|
||
{/* "Cambodia", */ "KH"},
|
||
{/* "Cameroon", */ "CM"},
|
||
{/* "Canada", */ "CA"},
|
||
{/* "Cape Verde", */ "CV"},
|
||
{/* "Cayman Islands", */ "KY"},
|
||
{/* "Central African Republic", */ "CF"},
|
||
{/* "Chad", */ "TD"},
|
||
{/* "Channel Islands", */ "GB"},
|
||
{/* "Chile", */ "CL"},
|
||
{/* "China", */ "CN"},
|
||
{/* "Christmas Island", */ "CX"},
|
||
{/* "Cocos (Keeling) Islands", */ "CC"},
|
||
{/* "Colombia", */ "CO"},
|
||
{/* "Comoros", */ "KM"},
|
||
{/* "Congo", */ "CG"},
|
||
{/* "Cook Islands", */ "CK"},
|
||
{/* "Costa Rica", */ "CR"},
|
||
{/* "C<>te d'Ivoire", */ "CI"},
|
||
{/* "Croatia (local name: Hrvatska)", */ "HR"},
|
||
{/* "Cuba", */ "CU"},
|
||
{/* "Cyprus", */ "CY"},
|
||
{/* "Czech Republic", */ "CZ"},
|
||
{/* "Denmark", */ "DK"},
|
||
{/* "Djibouti", */ "DJ"},
|
||
{/* "Dominica", */ "DM"},
|
||
{/* "Dominican Republic", */ "DO"},
|
||
{/* "East Timor", */ "TP"},
|
||
{/* "Ecuador", */ "EC"},
|
||
{/* "Egypt", */ "EG"},
|
||
{/* "El Salvador", */ "SV"},
|
||
{/* "Equatorial Guinea", */ "GQ"},
|
||
{/* "Eritrea", */ "ER"},
|
||
{/* "Estonia", */ "EE"},
|
||
{/* "Ethiopia", */ "ET"},
|
||
{/* "Falkland Islands (Malvinas)", */ "FK"},
|
||
{/* "Faroe Islands", */ "FO"},
|
||
{/* "Fiji", */ "FJ"},
|
||
{/* "Finland", */ "FI"},
|
||
{/* "France", */ "FR"},
|
||
{/* "France, Metropolitan", */ "FX"},
|
||
{/* "French Guiana", */ "GF"},
|
||
{/* "French Polynesia", */ "PF"},
|
||
{/* "French Southern and Antarctic Lands", */ "TF"},
|
||
{/* "Gabon", */ "GA"},
|
||
{/* "Gambia", */ "GM"},
|
||
{/* "Georgia", */ "GE"},
|
||
{/* "Germany", */ "DE"},
|
||
{/* "Ghana", */ "GH"},
|
||
{/* "Gibraltar", */ "GI"},
|
||
{/* "Greece", */ "GR"},
|
||
{/* "Greenland", */ "GL"},
|
||
{/* "Grenada", */ "GD"},
|
||
{/* "Guadeloupe", */ "GP"},
|
||
{/* "Guam", */ "GU"},
|
||
{/* "Guatemala", */ "GT"},
|
||
{/* "Guinea", */ "GN"},
|
||
{/* "Guinea-Bissau", */ "GW"},
|
||
{/* "Guyana", */ "GY"},
|
||
{/* "Haiti", */ "HT"},
|
||
{/* "Heard and Mc Donald Islands", */ "HM"},
|
||
{/* "Holy See (Vatican City State)", */ "VA"},
|
||
{/* "Honduras", */ "HN"},
|
||
{/* "Hong Kong SAR", */ "HK"},
|
||
{/* "Hungary", */ "HU"},
|
||
{/* "Iceland", */ "IS"},
|
||
{/* "India", */ "IN"},
|
||
{/* "Indonesia", */ "ID"},
|
||
{/* "Iran (Islamic Republic Of)", */ "IR"},
|
||
{/* "Iraq", */ "IQ"},
|
||
{/* "Ireland", */ "IE"},
|
||
{/* "Israel", */ "IL"},
|
||
{/* "Italy", */ "IT"},
|
||
{/* "Jamaica", */ "JM"},
|
||
{/* "Japan", */ "JP"},
|
||
{/* "Jordan", */ "JO"},
|
||
{/* "Kazakhstan", */ "KZ"},
|
||
{/* "Kenya", */ "KE"},
|
||
{/* "Kiribati", */ "KI"},
|
||
{/* "Korea, Democratic People's Republic Of", */ "KP"},
|
||
{/* "Korea, Republic Of", */ "KR"},
|
||
{/* "Kuwait", */ "KW"},
|
||
{/* "Kyrgyzstan", */ "KG"},
|
||
{/* "Lao People's Democratic Republic", */ "LA"},
|
||
{/* "Latvia", */ "LV"},
|
||
{/* "Lebanon", */ "LB"},
|
||
{/* "Lesotho", */ "LS"},
|
||
{/* "Liberia", */ "LR"},
|
||
{/* "Libyan Arab Jamahiriya", */ "LY"},
|
||
{/* "Liechtenstein", */ "LI"},
|
||
{/* "Lithuania", */ "LT"},
|
||
{/* "Luxembourg", */ "LU"},
|
||
{/* "Macau SAR", */ "MO"},
|
||
{/* "Macedonia, The Former Yugoslav Republic Of", */ "MK"},
|
||
{/* "Madagascar", */ "MG"},
|
||
{/* "Malawi", */ "MW"},
|
||
{/* "Malaysia", */ "MY"},
|
||
{/* "Maldives", */ "MV"},
|
||
{/* "Mali", */ "ML"},
|
||
{/* "Malta", */ "MT"},
|
||
{/* "Man, Isle of",*/ "GB"},
|
||
{/* "Marshall Islands", */ "MH"},
|
||
{/* "Martinique", */ "MQ"},
|
||
{/* "Mauritania", */ "MR"},
|
||
{/* "Mauritius", */ "MU"},
|
||
{/* "Mayotte", */ "YT"},
|
||
{/* "Mexico", */ "MX"},
|
||
{/* "Micronesia, Federated States Of", */ "FM"},
|
||
{/* "Moldova, Republic Of", */ "MD"},
|
||
{/* "Monaco", */ "MC"},
|
||
{/* "Mongolia", */ "MN"},
|
||
{/* "Montserrat", */ "MS"},
|
||
{/* "Morocco", */ "MA"},
|
||
{/* "Mozambique", */ "MZ"},
|
||
{/* "Myanmar", */ "MM"},
|
||
{/* "Namibia", */ "NA"},
|
||
{/* "Nauru", */ "NR"},
|
||
{/* "Nepal", */ "NP"},
|
||
{/* "Netherlands", */ "NL"},
|
||
{/* "Netherlands ANTILLES", */ "AN"},
|
||
{/* "New Caledonia", */ "NC"},
|
||
{/* "New Zealand", */ "NZ"},
|
||
{/* "Nicaragua", */ "NI"},
|
||
{/* "Niger", */ "NE"},
|
||
{/* "Nigeria", */ "NG"},
|
||
{/* "Niue", */ "NU"},
|
||
{/* "Norfolk Island", */ "NF"},
|
||
{/* "Northern Mariana Islands", */ "MP"},
|
||
{/* "Norway", */ "NO"},
|
||
{/* "Oman", */ "OM"},
|
||
{/* "Pakistan", */ "PK"},
|
||
{/* "Palau", */ "PW"},
|
||
{/* "Panama", */ "PA"},
|
||
{/* "Papua New Guinea", */ "PG"},
|
||
{/* "Paraguay", */ "PY"},
|
||
{/* "Peru", */ "PE"},
|
||
{/* "Philippines", */ "PH"},
|
||
{/* "Pitcairn Islands", */ "PN"},
|
||
{/* "Poland", */ "PL"},
|
||
{/* "Portugal", */ "PT"},
|
||
{/* "Puerto Rico", */ "PR"},
|
||
{/* "Qatar", */ "QA"},
|
||
{/* "Reunion", */ "RE"},
|
||
{/* "Romania", */ "RO"},
|
||
{/* "Russian Federation", */ "RU"},
|
||
{/* "Rwanda", */ "RW"},
|
||
{/* "Saint Kitts and Nevis", */ "KN"},
|
||
{/* "Saint Lucia", */ "LC"},
|
||
{/* "Saint Vincent and The Grenadines", */ "VC"},
|
||
{/* "Samoa", */ "WS"},
|
||
{/* "San Marino", */ "SM"},
|
||
{/* "S<>o Tom<6F> and Pr<50>ncipe ", */ "ST"},
|
||
{/* "Saudi Arabia", */ "SA"},
|
||
{/* "Senegal", */ "SN"},
|
||
{/* "Seychelles", */ "SC"},
|
||
{/* "Sierra Leone", */ "SL"},
|
||
{/* "Singapore", */ "SG"},
|
||
{/* "Slovakia (Slovak Republic)", */ "SK"},
|
||
{/* "Slovenia", */ "SI"},
|
||
{/* "Solomon Islands", */ "SB"},
|
||
{/* "Somalia", */ "SO"},
|
||
{/* "South Africa", */ "ZA"},
|
||
{/* "South Georgia and The South Sandwich Islands", */ "GS"},
|
||
{/* "Spain", */ "ES"},
|
||
{/* "Sri Lanka", */ "LK"},
|
||
{/* "St. Helena", */ "SH"},
|
||
{/* "St. Pierre and Miquelon", */ "PM"},
|
||
{/* "Sudan", */ "SD"},
|
||
{/* "Suriname", */ "SR"},
|
||
{/* "Svalbard and Jan Mayen Islands", */ "SJ"},
|
||
{/* "Swaziland", */ "SZ"},
|
||
{/* "Sweden", */ "SE"},
|
||
{/* "Switzerland", */ "CH"},
|
||
{/* "Syrian Arab Republic", */ "SY"},
|
||
{/* "Taiwan", */ "TW"},
|
||
{/* "Tajikistan", */ "TJ"},
|
||
{/* "Tanzania, United Republic Of", */ "TZ"},
|
||
{/* "Thailand", */ "TH"},
|
||
{/* "Togo", */ "TG"},
|
||
{/* "Tokelau", */ "TK"},
|
||
{/* "Tonga", */ "TO"},
|
||
{/* "Trinidad and Tobago", */ "TT"},
|
||
{/* "Tunisia", */ "TN"},
|
||
{/* "Turkey", */ "TR"},
|
||
{/* "Turkmenistan", */ "TM"},
|
||
{/* "Turks and Caicos Islands", */ "TC"},
|
||
{/* "Tuvalu", */ "TV"},
|
||
{/* "Uganda", */ "UG"},
|
||
{/* "Ukraine", */ "UA"},
|
||
{/* "United Arab Emirates", */ "AE"},
|
||
{/* "United Kingdom", */ "GB"},
|
||
{/* "United States", */ "US"},
|
||
{/* "U.S. Minor Outlying Islands", */ "UM"},
|
||
{/* "Uruguay", */ "UY"},
|
||
{/* "Uzbekistan", */ "UZ"},
|
||
{/* "Vanuatu", */ "VU"},
|
||
{/* "Venezuela", */ "VE"},
|
||
{/* "Viet Nam", */ "VN"},
|
||
{/* "Virgin Islands (British)", */ "VG"},
|
||
{/* "Virgin Islands (U.S.)", */ "VI"},
|
||
{/* "Wallis and Futuna Islands", */ "WF"},
|
||
{/* "Yemen", */ "YE"},
|
||
{/* "Yugoslavia", */ "YU"},
|
||
{/* "Congo (DRC)", */ "ZR"},
|
||
{/* "Zambia", */ "ZM"},
|
||
{/* "Zimbabwe", */ "ZW"}
|
||
};
|
||
|
||
static const unsigned g_uTableSize = sizeof( g_Table )/ sizeof( g_Table[0] );
|
||
|
||
const ISO3166& ISO3166::GetCountry( unsigned i )
|
||
{
|
||
return g_Table[i];
|
||
}
|
||
|
||
unsigned ISO3166::GetNumCountries()
|
||
{
|
||
return g_uTableSize;
|
||
}
|
||
|
||
#endif
|
||
|
||
|
||
|