mirror of
https://github.com/ElementsProject/lightning.git
synced 2024-11-19 18:11:28 +01:00
0f2c9cf5d5
We often have the currency as a tal string. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
204 lines
3.3 KiB
C
204 lines
3.3 KiB
C
#include <ccan/array_size/array_size.h>
|
|
#include <ccan/mem/mem.h>
|
|
#include <common/iso4217.h>
|
|
|
|
/* Wikipedia leads me to: https://www.currency-iso.org/en/home/tables/table-a1.html
|
|
|
|
"List one: Currency, fund and precious metal codes",,,,,
|
|
Published:,,,,,
|
|
"August 29, 2018", ,,,,
|
|
ENTITY,Currency,Alphabetic Code,Numeric Code,Minor unit,Fund
|
|
*/
|
|
static const struct iso4217_name_and_divisor iso4217[] = {
|
|
{ "AED", 2 },
|
|
{ "AFN", 2 },
|
|
{ "ALL", 2 },
|
|
{ "AMD", 2 },
|
|
{ "ANG", 2 },
|
|
{ "AOA", 2 },
|
|
{ "ARS", 2 },
|
|
{ "AUD", 2 },
|
|
{ "AWG", 2 },
|
|
{ "AZN", 2 },
|
|
{ "BAM", 2 },
|
|
{ "BBD", 2 },
|
|
{ "BDT", 2 },
|
|
{ "BGN", 2 },
|
|
{ "BHD", 3 },
|
|
{ "BIF", 0 },
|
|
{ "BMD", 2 },
|
|
{ "BND", 2 },
|
|
{ "BOB", 2 },
|
|
{ "BOV", 2 },
|
|
{ "BRL", 2 },
|
|
{ "BSD", 2 },
|
|
{ "BTN", 2 },
|
|
{ "BWP", 2 },
|
|
{ "BYN", 2 },
|
|
{ "BZD", 2 },
|
|
{ "CAD", 2 },
|
|
{ "CDF", 2 },
|
|
{ "CHE", 2 },
|
|
{ "CHF", 2 },
|
|
{ "CHW", 2 },
|
|
{ "CLF", 4 },
|
|
{ "CLP", 0 },
|
|
{ "CNY", 2 },
|
|
{ "COP", 2 },
|
|
{ "COU", 2 },
|
|
{ "CRC", 2 },
|
|
{ "CUC", 2 },
|
|
{ "CUP", 2 },
|
|
{ "CVE", 2 },
|
|
{ "CZK", 2 },
|
|
{ "DJF", 0 },
|
|
{ "DKK", 2 },
|
|
{ "DOP", 2 },
|
|
{ "DZD", 2 },
|
|
{ "EGP", 2 },
|
|
{ "ERN", 2 },
|
|
{ "ETB", 2 },
|
|
{ "EUR", 2 },
|
|
{ "FJD", 2 },
|
|
{ "FKP", 2 },
|
|
{ "GBP", 2 },
|
|
{ "GEL", 2 },
|
|
{ "GHS", 2 },
|
|
{ "GIP", 2 },
|
|
{ "GMD", 2 },
|
|
{ "GNF", 0 },
|
|
{ "GTQ", 2 },
|
|
{ "GYD", 2 },
|
|
{ "HKD", 2 },
|
|
{ "HNL", 2 },
|
|
{ "HRK", 2 },
|
|
{ "HTG", 2 },
|
|
{ "HUF", 2 },
|
|
{ "IDR", 2 },
|
|
{ "ILS", 2 },
|
|
{ "INR", 2 },
|
|
{ "IQD", 3 },
|
|
{ "IRR", 2 },
|
|
{ "ISK", 0 },
|
|
{ "JMD", 2 },
|
|
{ "JOD", 3 },
|
|
{ "JPY", 0 },
|
|
{ "KES", 2 },
|
|
{ "KGS", 2 },
|
|
{ "KHR", 2 },
|
|
{ "KMF", 0 },
|
|
{ "KPW", 2 },
|
|
{ "KRW", 0 },
|
|
{ "KWD", 3 },
|
|
{ "KYD", 2 },
|
|
{ "KZT", 2 },
|
|
{ "LAK", 2 },
|
|
{ "LBP", 2 },
|
|
{ "LKR", 2 },
|
|
{ "LRD", 2 },
|
|
{ "LSL", 2 },
|
|
{ "LYD", 3 },
|
|
{ "MAD", 2 },
|
|
{ "MDL", 2 },
|
|
{ "MGA", 2 },
|
|
{ "MKD", 2 },
|
|
{ "MMK", 2 },
|
|
{ "MNT", 2 },
|
|
{ "MOP", 2 },
|
|
{ "MRU", 2 },
|
|
{ "MUR", 2 },
|
|
{ "MVR", 2 },
|
|
{ "MWK", 2 },
|
|
{ "MXN", 2 },
|
|
{ "MXV", 2 },
|
|
{ "MYR", 2 },
|
|
{ "MZN", 2 },
|
|
{ "NAD", 2 },
|
|
{ "NGN", 2 },
|
|
{ "NIO", 2 },
|
|
{ "NOK", 2 },
|
|
{ "NPR", 2 },
|
|
{ "NZD", 2 },
|
|
{ "OMR", 3 },
|
|
{ "PAB", 2 },
|
|
{ "PEN", 2 },
|
|
{ "PGK", 2 },
|
|
{ "PHP", 2 },
|
|
{ "PKR", 2 },
|
|
{ "PLN", 2 },
|
|
{ "PYG", 0 },
|
|
{ "QAR", 2 },
|
|
{ "RON", 2 },
|
|
{ "RSD", 2 },
|
|
{ "RUB", 2 },
|
|
{ "RWF", 0 },
|
|
{ "SAR", 2 },
|
|
{ "SBD", 2 },
|
|
{ "SCR", 2 },
|
|
{ "SDG", 2 },
|
|
{ "SEK", 2 },
|
|
{ "SGD", 2 },
|
|
{ "SHP", 2 },
|
|
{ "SLL", 2 },
|
|
{ "SOS", 2 },
|
|
{ "SRD", 2 },
|
|
{ "SSP", 2 },
|
|
{ "STN", 2 },
|
|
{ "SVC", 2 },
|
|
{ "SYP", 2 },
|
|
{ "SZL", 2 },
|
|
{ "THB", 2 },
|
|
{ "TJS", 2 },
|
|
{ "TMT", 2 },
|
|
{ "TND", 3 },
|
|
{ "TOP", 2 },
|
|
{ "TRY", 2 },
|
|
{ "TTD", 2 },
|
|
{ "TWD", 2 },
|
|
{ "TZS", 2 },
|
|
{ "UAH", 2 },
|
|
{ "UGX", 0 },
|
|
{ "USD", 2 },
|
|
{ "USN", 2 },
|
|
{ "UYI", 0 },
|
|
{ "UYU", 2 },
|
|
{ "UYW", 4 },
|
|
{ "UZS", 2 },
|
|
{ "VES", 2 },
|
|
{ "VND", 0 },
|
|
{ "VUV", 0 },
|
|
{ "WST", 2 },
|
|
{ "XAF", 0 },
|
|
{ "XAG", 0 },
|
|
{ "XAU", 0 },
|
|
{ "XBA", 0 },
|
|
{ "XBB", 0 },
|
|
{ "XBC", 0 },
|
|
{ "XBD", 0 },
|
|
{ "XCD", 2 },
|
|
{ "XDR", 0 },
|
|
{ "XOF", 0 },
|
|
{ "XPD", 0 },
|
|
{ "XPF", 0 },
|
|
{ "XPT", 0 },
|
|
{ "XSU", 0 },
|
|
{ "XTS", 0 },
|
|
{ "XUA", 0 },
|
|
{ "XXX", 0 },
|
|
{ "YER", 2 },
|
|
{ "ZAR", 2 },
|
|
{ "ZMW", 2 },
|
|
{ "ZWL", 2 },
|
|
};
|
|
|
|
const struct iso4217_name_and_divisor *find_iso4217(const utf8 *prefix,
|
|
size_t len)
|
|
{
|
|
for (size_t i = 0; i < ARRAY_SIZE(iso4217); i++) {
|
|
if (memeq(iso4217[i].name, strlen(iso4217[i].name),
|
|
prefix, len))
|
|
return &iso4217[i];
|
|
}
|
|
return NULL;
|
|
}
|