mirror of
https://git.code.sf.net/p/zint/code
synced 2025-05-23 03:26:56 -04:00
gs1: update to latest gs1-syntax-dictionary (cset64, separate
latitude/longitude, mediatype, new AIs 7241, 7242, 8030) TODO: integrate gs1-syntax-engine BWIPP: update to latest (bwipp_dump.ps) manual: README: pandoc latest
This commit is contained in:
parent
a324fe90f6
commit
6733e76be4
10 changed files with 727 additions and 597 deletions
|
@ -1,10 +1,10 @@
|
|||
/*
|
||||
* GS1 AI checker generated by "backend/tools/gen_gs1_lint.php" from
|
||||
* https://ref.gs1.org/tools/gs1-barcode-syntax-resource/syntax-dictionary/
|
||||
* https://raw.githubusercontent.com/gs1/gs1-syntax-dictionary/main/gs1-syntax-dictionary.txt
|
||||
*/
|
||||
/*
|
||||
libzint - the open source barcode library
|
||||
Copyright (C) 2021-2022 Robin Stuart <rstuart114@gmail.com>
|
||||
Copyright (C) 2021-2023 Robin Stuart <rstuart114@gmail.com>
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
|
@ -36,7 +36,7 @@
|
|||
#ifndef Z_GS1_LINT_H
|
||||
#define Z_GS1_LINT_H
|
||||
|
||||
/* N18,csum,key (Used by SSCC) */
|
||||
/* N18,csum,key (Used by SSCC, GSRN - PROVIDER, GSRN - RECIPIENT) */
|
||||
static int n18_csum_key(const unsigned char *data, const int data_len,
|
||||
int *p_err_no, int *p_err_posn, char err_msg[50]) {
|
||||
return data_len == 18
|
||||
|
@ -88,7 +88,7 @@ static int x__28(const unsigned char *data, const int data_len,
|
|||
&& cset82(data, data_len, 0, 1, 28, p_err_no, p_err_posn, err_msg);
|
||||
}
|
||||
|
||||
/* X..30 (Used by ADDITIONAL ID, CUST. PART NO., SECONDARY SERIAL, REF. TO SOURCE...) */
|
||||
/* X..30 (Used by ADDITIONAL ID, CUST. PART No., SECONDARY SERIAL, REF. TO SOURCE...) */
|
||||
static int x__30(const unsigned char *data, const int data_len,
|
||||
int *p_err_no, int *p_err_posn, char err_msg[50]) {
|
||||
return data_len >= 1 && data_len <= 30
|
||||
|
@ -257,13 +257,16 @@ static int x2_iso3166alpha2(const unsigned char *data, const int data_len,
|
|||
&& iso3166alpha2(data, data_len, 0, 2, 2, p_err_no, p_err_posn, err_msg, 0);
|
||||
}
|
||||
|
||||
/* N20,latlong (Used by SHIP TO GEO) */
|
||||
static int n20_latlong(const unsigned char *data, const int data_len,
|
||||
/* N10,latitude N10,longitude (Used by SHIP TO GEO) */
|
||||
static int n10_latitude_n10_longitude(const unsigned char *data, const int data_len,
|
||||
int *p_err_no, int *p_err_posn, char err_msg[50]) {
|
||||
return data_len == 20
|
||||
&& latlong(data, data_len, 0, 20, 20, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
|
||||
&& numeric(data, data_len, 0, 20, 20, p_err_no, p_err_posn, err_msg)
|
||||
&& latlong(data, data_len, 0, 20, 20, p_err_no, p_err_posn, err_msg, 0);
|
||||
&& latitude(data, data_len, 0, 10, 10, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
|
||||
&& longitude(data, data_len, 10, 10, 10, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
|
||||
&& numeric(data, data_len, 0, 10, 10, p_err_no, p_err_posn, err_msg)
|
||||
&& latitude(data, data_len, 0, 10, 10, p_err_no, p_err_posn, err_msg, 0)
|
||||
&& numeric(data, data_len, 10, 10, 10, p_err_no, p_err_posn, err_msg)
|
||||
&& longitude(data, data_len, 10, 10, 10, p_err_no, p_err_posn, err_msg, 0);
|
||||
}
|
||||
|
||||
/* N1,yesno (Used by DANGEROUS GOODS, AUTH TO LEAVE, SIG REQUIRED) */
|
||||
|
@ -397,6 +400,22 @@ static int x2_x__28(const unsigned char *data, const int data_len,
|
|||
&& cset82(data, data_len, 2, 1, 28, p_err_no, p_err_posn, err_msg);
|
||||
}
|
||||
|
||||
/* N2,mediatype (Used by AIDC MEDIA TYPE) */
|
||||
static int n2_mediatype(const unsigned char *data, const int data_len,
|
||||
int *p_err_no, int *p_err_posn, char err_msg[50]) {
|
||||
return data_len == 2
|
||||
&& mediatype(data, data_len, 0, 2, 2, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
|
||||
&& numeric(data, data_len, 0, 2, 2, p_err_no, p_err_posn, err_msg)
|
||||
&& mediatype(data, data_len, 0, 2, 2, p_err_no, p_err_posn, err_msg, 0);
|
||||
}
|
||||
|
||||
/* X..25 (Used by VCN, REF No.) */
|
||||
static int x__25(const unsigned char *data, const int data_len,
|
||||
int *p_err_no, int *p_err_posn, char err_msg[50]) {
|
||||
return data_len >= 1 && data_len <= 25
|
||||
&& cset82(data, data_len, 0, 1, 25, p_err_no, p_err_posn, err_msg);
|
||||
}
|
||||
|
||||
/* N4,nonzero N5,nonzero N3,nonzero N1,winding N1 (Used by DIMENSIONS) */
|
||||
static int n4_nonzero_n5_nonzero_n3_nonzero_n1_winding_n1(const unsigned char *data, const int data_len,
|
||||
int *p_err_no, int *p_err_posn, char err_msg[50]) {
|
||||
|
@ -500,15 +519,6 @@ static int x__25_csumalpha_key(const unsigned char *data, const int data_len,
|
|||
&& key(data, data_len, 0, 1, 25, p_err_no, p_err_posn, err_msg, 0);
|
||||
}
|
||||
|
||||
/* N18,csum (Used by GSRN - PROVIDER, GSRN - RECIPIENT) */
|
||||
static int n18_csum(const unsigned char *data, const int data_len,
|
||||
int *p_err_no, int *p_err_posn, char err_msg[50]) {
|
||||
return data_len == 18
|
||||
&& csum(data, data_len, 0, 18, 18, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
|
||||
&& numeric(data, data_len, 0, 18, 18, p_err_no, p_err_posn, err_msg)
|
||||
&& csum(data, data_len, 0, 18, 18, p_err_no, p_err_posn, err_msg, 0);
|
||||
}
|
||||
|
||||
/* N..10 (Used by SRIN) */
|
||||
static int n__10(const unsigned char *data, const int data_len,
|
||||
int *p_err_no, int *p_err_posn, char err_msg[50]) {
|
||||
|
@ -516,11 +526,11 @@ static int n__10(const unsigned char *data, const int data_len,
|
|||
&& numeric(data, data_len, 0, 1, 10, p_err_no, p_err_posn, err_msg);
|
||||
}
|
||||
|
||||
/* X..25 (Used by REF NO.) */
|
||||
static int x__25(const unsigned char *data, const int data_len,
|
||||
/* Z..90 (Used by DIGSIG) */
|
||||
static int z__90(const unsigned char *data, const int data_len,
|
||||
int *p_err_no, int *p_err_posn, char err_msg[50]) {
|
||||
return data_len >= 1 && data_len <= 25
|
||||
&& cset82(data, data_len, 0, 1, 25, p_err_no, p_err_posn, err_msg);
|
||||
return data_len >= 1 && data_len <= 90
|
||||
&& cset64(data, data_len, 0, 1, 90, p_err_no, p_err_posn, err_msg);
|
||||
}
|
||||
|
||||
/* X..70,couponcode */
|
||||
|
@ -724,7 +734,7 @@ static int gs1_lint(const int ai, const unsigned char *data, const int data_len,
|
|||
return x__30(data, data_len, p_err_no, p_err_posn, err_msg);
|
||||
}
|
||||
if (ai == 4309) {
|
||||
return n20_latlong(data, data_len, p_err_no, p_err_posn, err_msg);
|
||||
return n10_latitude_n10_longitude(data, data_len, p_err_no, p_err_posn, err_msg);
|
||||
}
|
||||
if (ai == 4318) {
|
||||
return x__20(data, data_len, p_err_no, p_err_posn, err_msg);
|
||||
|
@ -795,6 +805,12 @@ static int gs1_lint(const int ai, const unsigned char *data, const int data_len,
|
|||
if (ai == 7240) {
|
||||
return x__20(data, data_len, p_err_no, p_err_posn, err_msg);
|
||||
}
|
||||
if (ai == 7241) {
|
||||
return n2_mediatype(data, data_len, p_err_no, p_err_posn, err_msg);
|
||||
}
|
||||
if (ai == 7242) {
|
||||
return x__25(data, data_len, p_err_no, p_err_posn, err_msg);
|
||||
}
|
||||
|
||||
} else if (ai < 8100) {
|
||||
|
||||
|
@ -835,7 +851,7 @@ static int gs1_lint(const int ai, const unsigned char *data, const int data_len,
|
|||
return x__25_csumalpha_key(data, data_len, p_err_no, p_err_posn, err_msg);
|
||||
}
|
||||
if (ai == 8017 || ai == 8018) {
|
||||
return n18_csum(data, data_len, p_err_no, p_err_posn, err_msg);
|
||||
return n18_csum_key(data, data_len, p_err_no, p_err_posn, err_msg);
|
||||
}
|
||||
if (ai == 8019) {
|
||||
return n__10(data, data_len, p_err_no, p_err_posn, err_msg);
|
||||
|
@ -843,6 +859,9 @@ static int gs1_lint(const int ai, const unsigned char *data, const int data_len,
|
|||
if (ai == 8020) {
|
||||
return x__25(data, data_len, p_err_no, p_err_posn, err_msg);
|
||||
}
|
||||
if (ai == 8030) {
|
||||
return z__90(data, data_len, p_err_no, p_err_posn, err_msg);
|
||||
}
|
||||
|
||||
} else if (ai < 8200) {
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue