GS1: update for new AI 4309 with latlong validator, plus new GS1

syntax dictionary format (pre-release)
iso4217: new currency code 925
This commit is contained in:
gitlost 2022-07-14 20:44:48 +01:00
parent 930f458979
commit a48434c19c
10 changed files with 962 additions and 864 deletions

View file

@ -1,6 +1,6 @@
/*
libzint - the open source barcode library
Copyright (C) 2021 Robin Stuart <rstuart114@gmail.com>
Copyright (C) 2021-2022 Robin Stuart <rstuart114@gmail.com>
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
@ -27,7 +27,7 @@
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
*/
/* vim: set ts=4 sw=4 et : */
/* SPDX-License-Identifier: BSD-3-Clause */
#include "testcommon.h"
#include "../iso4217.h"
@ -38,7 +38,7 @@ static void test_numeric(int index) {
int data;
int ret;
};
// s/\/\*[ 0-9]*\*\//\=printf("\/*%3d*\/", line(".") - line("'<"))
/* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */
struct item data[] = {
/* 0*/ { -1, 0 },
/* 1*/ { 0, 0 },
@ -350,82 +350,84 @@ static void test_numeric(int index) {
/*307*/ { 900, 0 },
/*308*/ { 901, 1 },
/*309*/ { 902, 0 },
/*310*/ { 926, 0 },
/*311*/ { 927, 1 },
/*312*/ { 928, 1 },
/*313*/ { 929, 1 },
/*314*/ { 930, 1 },
/*315*/ { 931, 1 },
/*316*/ { 932, 1 },
/*317*/ { 933, 1 },
/*318*/ { 934, 1 },
/*319*/ { 935, 0 },
/*320*/ { 936, 1 },
/*321*/ { 937, 0 },
/*322*/ { 938, 1 },
/*323*/ { 939, 0 },
/*324*/ { 940, 1 },
/*325*/ { 941, 1 },
/*326*/ { 942, 0 },
/*327*/ { 943, 1 },
/*328*/ { 944, 1 },
/*329*/ { 945, 0 },
/*330*/ { 946, 1 },
/*331*/ { 947, 1 },
/*332*/ { 948, 1 },
/*333*/ { 949, 1 },
/*334*/ { 950, 1 },
/*335*/ { 951, 1 },
/*336*/ { 952, 1 },
/*337*/ { 953, 1 },
/*338*/ { 954, 0 },
/*339*/ { 955, 1 },
/*340*/ { 956, 1 },
/*341*/ { 957, 1 },
/*342*/ { 958, 1 },
/*343*/ { 959, 1 },
/*344*/ { 960, 1 },
/*345*/ { 961, 1 },
/*346*/ { 962, 1 },
/*347*/ { 963, 1 },
/*348*/ { 964, 1 },
/*349*/ { 965, 1 },
/*350*/ { 966, 0 },
/*351*/ { 967, 1 },
/*352*/ { 968, 1 },
/*353*/ { 969, 1 },
/*354*/ { 970, 1 },
/*355*/ { 971, 1 },
/*356*/ { 972, 1 },
/*357*/ { 973, 1 },
/*358*/ { 974, 0 },
/*359*/ { 975, 1 },
/*360*/ { 976, 1 },
/*361*/ { 977, 1 },
/*362*/ { 978, 1 },
/*363*/ { 979, 1 },
/*364*/ { 980, 1 },
/*365*/ { 981, 1 },
/*366*/ { 982, 0 },
/*367*/ { 983, 0 },
/*368*/ { 984, 1 },
/*369*/ { 985, 1 },
/*370*/ { 986, 1 },
/*371*/ { 987, 0 },
/*372*/ { 988, 0 },
/*373*/ { 989, 0 },
/*374*/ { 990, 1 },
/*375*/ { 991, 0 },
/*376*/ { 992, 0 },
/*377*/ { 993, 0 },
/*378*/ { 994, 1 },
/*379*/ { 995, 0 },
/*380*/ { 996, 0 },
/*381*/ { 997, 1 },
/*382*/ { 998, 0 },
/*383*/ { 999, 1 },
/*384*/ { 1000, 0 },
/*385*/ { 2000, 0 },
/*310*/ { 924, 0 },
/*311*/ { 925, 1 },
/*312*/ { 926, 0 },
/*313*/ { 927, 1 },
/*314*/ { 928, 1 },
/*315*/ { 929, 1 },
/*316*/ { 930, 1 },
/*317*/ { 931, 1 },
/*318*/ { 932, 1 },
/*319*/ { 933, 1 },
/*320*/ { 934, 1 },
/*321*/ { 935, 0 },
/*322*/ { 936, 1 },
/*323*/ { 937, 0 },
/*324*/ { 938, 1 },
/*325*/ { 939, 0 },
/*326*/ { 940, 1 },
/*327*/ { 941, 1 },
/*328*/ { 942, 0 },
/*329*/ { 943, 1 },
/*330*/ { 944, 1 },
/*331*/ { 945, 0 },
/*332*/ { 946, 1 },
/*333*/ { 947, 1 },
/*334*/ { 948, 1 },
/*335*/ { 949, 1 },
/*336*/ { 950, 1 },
/*337*/ { 951, 1 },
/*338*/ { 952, 1 },
/*339*/ { 953, 1 },
/*340*/ { 954, 0 },
/*341*/ { 955, 1 },
/*342*/ { 956, 1 },
/*343*/ { 957, 1 },
/*344*/ { 958, 1 },
/*345*/ { 959, 1 },
/*346*/ { 960, 1 },
/*347*/ { 961, 1 },
/*348*/ { 962, 1 },
/*349*/ { 963, 1 },
/*350*/ { 964, 1 },
/*351*/ { 965, 1 },
/*352*/ { 966, 0 },
/*353*/ { 967, 1 },
/*354*/ { 968, 1 },
/*355*/ { 969, 1 },
/*356*/ { 970, 1 },
/*357*/ { 971, 1 },
/*358*/ { 972, 1 },
/*359*/ { 973, 1 },
/*360*/ { 974, 0 },
/*361*/ { 975, 1 },
/*362*/ { 976, 1 },
/*363*/ { 977, 1 },
/*364*/ { 978, 1 },
/*365*/ { 979, 1 },
/*366*/ { 980, 1 },
/*367*/ { 981, 1 },
/*368*/ { 982, 0 },
/*369*/ { 983, 0 },
/*370*/ { 984, 1 },
/*371*/ { 985, 1 },
/*372*/ { 986, 1 },
/*373*/ { 987, 0 },
/*374*/ { 988, 0 },
/*375*/ { 989, 0 },
/*376*/ { 990, 1 },
/*377*/ { 991, 0 },
/*378*/ { 992, 0 },
/*379*/ { 993, 0 },
/*380*/ { 994, 1 },
/*381*/ { 995, 0 },
/*382*/ { 996, 0 },
/*383*/ { 997, 1 },
/*384*/ { 998, 0 },
/*385*/ { 999, 1 },
/*386*/ { 1000, 0 },
/*387*/ { 2000, 0 },
};
int data_size = ARRAY_SIZE(data);
int i, ret;
@ -445,7 +447,7 @@ static void test_numeric(int index) {
/* Binary chop version: Whether ISO 4217 numeric */
static int bc_iso4217_numeric(int cc) {
static const short codes[179] = {
static const short codes[180] = {
/*ALL*/ 8, /*DZD*/ 12, /*ARS*/ 32, /*AUD*/ 36, /*BSD*/ 44, /*BHD*/ 48, /*BDT*/ 50, /*AMD*/ 51, /*BBD*/ 52, /*BMD*/ 60,
/*BTN*/ 64, /*BOB*/ 68, /*BWP*/ 72, /*BZD*/ 84, /*SBD*/ 90, /*BND*/ 96, /*MMK*/ 104, /*BIF*/ 108, /*KHR*/ 116, /*CAD*/ 124,
/*CVE*/ 132, /*KYD*/ 136, /*LKR*/ 144, /*CLP*/ 152, /*CNY*/ 156, /*COP*/ 170, /*KMF*/ 174, /*CRC*/ 188, /*HRK*/ 191, /*CUP*/ 192,
@ -458,12 +460,12 @@ static int bc_iso4217_numeric(int cc) {
/*PYG*/ 600, /*PEN*/ 604, /*PHP*/ 608, /*QAR*/ 634, /*RUB*/ 643, /*RWF*/ 646, /*SHP*/ 654, /*SAR*/ 682, /*SCR*/ 690, /*SLL*/ 694,
/*SGD*/ 702, /*VND*/ 704, /*SOS*/ 706, /*ZAR*/ 710, /*SSP*/ 728, /*SZL*/ 748, /*SEK*/ 752, /*CHF*/ 756, /*SYP*/ 760, /*THB*/ 764,
/*TOP*/ 776, /*TTD*/ 780, /*AED*/ 784, /*TND*/ 788, /*UGX*/ 800, /*MKD*/ 807, /*EGP*/ 818, /*GBP*/ 826, /*TZS*/ 834, /*USD*/ 840,
/*UYU*/ 858, /*UZS*/ 860, /*WST*/ 882, /*YER*/ 886, /*TWD*/ 901, /*UYW*/ 927, /*VES*/ 928, /*MRU*/ 929, /*STN*/ 930, /*CUC*/ 931,
/*ZWL*/ 932, /*BYN*/ 933, /*TMT*/ 934, /*GHS*/ 936, /*SDG*/ 938, /*UYI*/ 940, /*RSD*/ 941, /*MZN*/ 943, /*AZN*/ 944, /*RON*/ 946,
/*CHE*/ 947, /*CHW*/ 948, /*TRY*/ 949, /*XAF*/ 950, /*XCD*/ 951, /*XOF*/ 952, /*XPF*/ 953, /*XBA*/ 955, /*XBB*/ 956, /*XBC*/ 957,
/*XBD*/ 958, /*XAU*/ 959, /*XDR*/ 960, /*XAG*/ 961, /*XPT*/ 962, /*XTS*/ 963, /*XPD*/ 964, /*XUA*/ 965, /*ZMW*/ 967, /*SRD*/ 968,
/*MGA*/ 969, /*COU*/ 970, /*AFN*/ 971, /*TJS*/ 972, /*AOA*/ 973, /*BGN*/ 975, /*CDF*/ 976, /*BAM*/ 977, /*EUR*/ 978, /*MXV*/ 979,
/*UAH*/ 980, /*GEL*/ 981, /*BOV*/ 984, /*PLN*/ 985, /*BRL*/ 986, /*CLF*/ 990, /*XSU*/ 994, /*USN*/ 997, /*XXX*/ 999,
/*UYU*/ 858, /*UZS*/ 860, /*WST*/ 882, /*YER*/ 886, /*TWD*/ 901, /*SLE*/ 925, /*UYW*/ 927, /*VES*/ 928, /*MRU*/ 929, /*STN*/ 930,
/*CUC*/ 931, /*ZWL*/ 932, /*BYN*/ 933, /*TMT*/ 934, /*GHS*/ 936, /*SDG*/ 938, /*UYI*/ 940, /*RSD*/ 941, /*MZN*/ 943, /*AZN*/ 944,
/*RON*/ 946, /*CHE*/ 947, /*CHW*/ 948, /*TRY*/ 949, /*XAF*/ 950, /*XCD*/ 951, /*XOF*/ 952, /*XPF*/ 953, /*XBA*/ 955, /*XBB*/ 956,
/*XBC*/ 957, /*XBD*/ 958, /*XAU*/ 959, /*XDR*/ 960, /*XAG*/ 961, /*XPT*/ 962, /*XTS*/ 963, /*XPD*/ 964, /*XUA*/ 965, /*ZMW*/ 967,
/*SRD*/ 968, /*MGA*/ 969, /*COU*/ 970, /*AFN*/ 971, /*TJS*/ 972, /*AOA*/ 973, /*BGN*/ 975, /*CDF*/ 976, /*BAM*/ 977, /*EUR*/ 978,
/*MXV*/ 979, /*UAH*/ 980, /*GEL*/ 981, /*BOV*/ 984, /*PLN*/ 985, /*BRL*/ 986, /*CLF*/ 990, /*XSU*/ 994, /*USN*/ 997, /*XXX*/ 999,
};
int s = 0, e = ARRAY_SIZE(codes) - 1;
@ -510,3 +512,5 @@ int main(int argc, char *argv[]) {
return 0;
}
/* vim: set ts=4 sw=4 et : */