mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-01-18 05:12:45 +01:00
common/iso4217: define the currency codes.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
parent
4d086e9939
commit
3404914416
@ -98,6 +98,7 @@ COMMON_HEADERS_NOGEN := $(COMMON_SRC_NOGEN:.c=.h) \
|
||||
common/errcode.h \
|
||||
common/gossip_constants.h \
|
||||
common/htlc.h \
|
||||
common/iso4217.h \
|
||||
common/json_command.h \
|
||||
common/jsonrpc_errors.h \
|
||||
common/overflows.h \
|
||||
|
201
common/iso4217.c
Normal file
201
common/iso4217.c
Normal file
@ -0,0 +1,201 @@
|
||||
#include <ccan/array_size/array_size.h>
|
||||
#include <common/iso4217.h>
|
||||
#include <string.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 char *prefix)
|
||||
{
|
||||
for (size_t i = 0; i < ARRAY_SIZE(iso4217); i++) {
|
||||
if (memcmp(iso4217[i].name, prefix, ISO4217_NAMELEN) == 0)
|
||||
return &iso4217[i];
|
||||
}
|
||||
return NULL;
|
||||
}
|
19
common/iso4217.h
Normal file
19
common/iso4217.h
Normal file
@ -0,0 +1,19 @@
|
||||
#ifndef LIGHTNING_COMMON_ISO4217_H
|
||||
#define LIGHTNING_COMMON_ISO4217_H
|
||||
#include "config.h"
|
||||
|
||||
/* BOLT-offers #12:
|
||||
*
|
||||
* - MUST specify `iso4217` as an ISO 4712 three-letter code.
|
||||
* - MUST specify `amount` in the currency unit adjusted by the ISO 4712
|
||||
* exponent (e.g. USD cents).
|
||||
*/
|
||||
struct iso4217_name_and_divisor {
|
||||
const char *name;
|
||||
unsigned int minor_unit;
|
||||
};
|
||||
|
||||
#define ISO4217_NAMELEN 3
|
||||
|
||||
const struct iso4217_name_and_divisor *find_iso4217(const char *prefix);
|
||||
#endif /* LIGHTNING_COMMON_ISO4217_H */
|
Loading…
Reference in New Issue
Block a user