comparison mupdf-source/thirdparty/zint/backend/gs1_lint.h @ 2:b50eed0cc0ef upstream

ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4. The directory name has changed: no version number in the expanded directory now.
author Franz Glasner <fzglas.hg@dom66.de>
date Mon, 15 Sep 2025 11:43:07 +0200
parents
children
comparison
equal deleted inserted replaced
1:1d09e1dec1d9 2:b50eed0cc0ef
1 /*
2 * GS1 AI checker generated by "backend/tools/gen_gs1_lint.php" from
3 * https://raw.githubusercontent.com/gs1/gs1-syntax-dictionary/main/gs1-syntax-dictionary.txt
4 */
5 /*
6 libzint - the open source barcode library
7 Copyright (C) 2021-2024 Robin Stuart <rstuart114@gmail.com>
8
9 Redistribution and use in source and binary forms, with or without
10 modification, are permitted provided that the following conditions
11 are met:
12
13 1. Redistributions of source code must retain the above copyright
14 notice, this list of conditions and the following disclaimer.
15 2. Redistributions in binary form must reproduce the above copyright
16 notice, this list of conditions and the following disclaimer in the
17 documentation and/or other materials provided with the distribution.
18 3. Neither the name of the project nor the names of its contributors
19 may be used to endorse or promote products derived from this software
20 without specific prior written permission.
21
22 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
23 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
26 FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28 OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31 OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 SUCH DAMAGE.
33 */
34 /* SPDX-License-Identifier: BSD-3-Clause */
35
36 #ifndef Z_GS1_LINT_H
37 #define Z_GS1_LINT_H
38
39 /* N18,csum,key (Used by SSCC, GSRN - PROVIDER, GSRN - RECIPIENT) */
40 static int n18_csum_key(const unsigned char *data,
41 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
42 return data_len == 18
43 && csum(data, data_len, 0, 18, 18, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
44 && key(data, data_len, 0, 18, 18, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
45 && numeric(data, data_len, 0, 18, 18, p_err_no, p_err_posn, err_msg)
46 && csum(data, data_len, 0, 18, 18, p_err_no, p_err_posn, err_msg, 0)
47 && key(data, data_len, 0, 18, 18, p_err_no, p_err_posn, err_msg, 0);
48 }
49
50 /* N14,csum,key (Used by GTIN, CONTENT, MTO GTIN) */
51 static int n14_csum_key(const unsigned char *data,
52 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
53 return data_len == 14
54 && csum(data, data_len, 0, 14, 14, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
55 && key(data, data_len, 0, 14, 14, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
56 && numeric(data, data_len, 0, 14, 14, p_err_no, p_err_posn, err_msg)
57 && csum(data, data_len, 0, 14, 14, p_err_no, p_err_posn, err_msg, 0)
58 && key(data, data_len, 0, 14, 14, p_err_no, p_err_posn, err_msg, 0);
59 }
60
61 /* X..20 (Used by BATCH/LOT, SERIAL, CPV, PCN, GLN EXTENSION COMPONENT, SHIP TO POST, RTN TO POST, REFURB LOT, ...) */
62 static int x__20(const unsigned char *data,
63 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
64 return data_len >= 1 && data_len <= 20
65 && cset82(data, data_len, 0, 1, 20, p_err_no, p_err_posn, err_msg);
66 }
67
68 /* N6,yymmd0 (Used by PROD DATE, DUE DATE, PACK DATE, BEST BEFORE or BEST BY, SELL BY, USE BY or EXPIRY) */
69 static int n6_yymmd0(const unsigned char *data,
70 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
71 return data_len == 6
72 && yymmd0(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
73 && numeric(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg)
74 && yymmd0(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg, 0);
75 }
76
77 /* N2 (Used by VARIANT) */
78 static int n2(const unsigned char *data,
79 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
80 return data_len == 2
81 && numeric(data, data_len, 0, 2, 2, p_err_no, p_err_posn, err_msg);
82 }
83
84 /* X..28 (Used by TPX) */
85 static int x__28(const unsigned char *data,
86 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
87 return data_len >= 1 && data_len <= 28
88 && cset82(data, data_len, 0, 1, 28, p_err_no, p_err_posn, err_msg);
89 }
90
91 /* X..30 (Used by ADDITIONAL ID, CUST. PART No., SECONDARY SERIAL, REF. TO SOURCE, ORDER NUMBER, ROUTE, SHIP TO...) */
92 static int x__30(const unsigned char *data,
93 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
94 return data_len >= 1 && data_len <= 30
95 && cset82(data, data_len, 0, 1, 30, p_err_no, p_err_posn, err_msg);
96 }
97
98 /* N..6 (Used by MTO VARIANT) */
99 static int n__6(const unsigned char *data,
100 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
101 return data_len >= 1 && data_len <= 6
102 && numeric(data, data_len, 0, 1, 6, p_err_no, p_err_posn, err_msg);
103 }
104
105 /* N13,csum,key [X..17] (Used by GDTI) */
106 static int n13_csum_key__x__17_(const unsigned char *data,
107 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
108 return data_len >= 13 && data_len <= 30
109 && csum(data, data_len, 0, 13, 13, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
110 && key(data, data_len, 0, 13, 13, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
111 && numeric(data, data_len, 0, 13, 13, p_err_no, p_err_posn, err_msg)
112 && csum(data, data_len, 0, 13, 13, p_err_no, p_err_posn, err_msg, 0)
113 && key(data, data_len, 0, 13, 13, p_err_no, p_err_posn, err_msg, 0)
114 && cset82(data, data_len, 13, 0, 17, p_err_no, p_err_posn, err_msg);
115 }
116
117 /* N13,csum,key [N..12] (Used by GCN) */
118 static int n13_csum_key__n__12_(const unsigned char *data,
119 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
120 return data_len >= 13 && data_len <= 25
121 && csum(data, data_len, 0, 13, 13, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
122 && key(data, data_len, 0, 13, 13, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
123 && numeric(data, data_len, 0, 13, 13, p_err_no, p_err_posn, err_msg)
124 && csum(data, data_len, 0, 13, 13, p_err_no, p_err_posn, err_msg, 0)
125 && key(data, data_len, 0, 13, 13, p_err_no, p_err_posn, err_msg, 0)
126 && numeric(data, data_len, 13, 0, 12, p_err_no, p_err_posn, err_msg);
127 }
128
129 /* N..8 (Used by VAR. COUNT, COUNT) */
130 static int n__8(const unsigned char *data,
131 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
132 return data_len >= 1 && data_len <= 8
133 && numeric(data, data_len, 0, 1, 8, p_err_no, p_err_posn, err_msg);
134 }
135
136 /* N6 (Used by NET WEIGHT (kg), LENGTH (m), WIDTH (m), HEIGHT (m), AREA (m²), NET VOLUME (l), NET VOLUME (m³)...) */
137 static int n6(const unsigned char *data,
138 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
139 return data_len == 6
140 && numeric(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg);
141 }
142
143 /* N..15 (Used by AMOUNT, PRICE) */
144 static int n__15(const unsigned char *data,
145 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
146 return data_len >= 1 && data_len <= 15
147 && numeric(data, data_len, 0, 1, 15, p_err_no, p_err_posn, err_msg);
148 }
149
150 /* N3,iso4217 N..15 (Used by AMOUNT, PRICE) */
151 static int n3_iso4217_n__15(const unsigned char *data,
152 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
153 return data_len >= 4 && data_len <= 18
154 && iso4217(data, data_len, 0, 3, 3, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
155 && numeric(data, data_len, 0, 3, 3, p_err_no, p_err_posn, err_msg)
156 && iso4217(data, data_len, 0, 3, 3, p_err_no, p_err_posn, err_msg, 0)
157 && numeric(data, data_len, 3, 1, 15, p_err_no, p_err_posn, err_msg);
158 }
159
160 /* N4 (Used by PRCNT OFF, POINTS) */
161 static int n4(const unsigned char *data,
162 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
163 return data_len == 4
164 && numeric(data, data_len, 0, 4, 4, p_err_no, p_err_posn, err_msg);
165 }
166
167 /* X..30,key (Used by GINC, GIAI - ASSEMBLY, GIAI) */
168 static int x__30_key(const unsigned char *data,
169 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
170 return data_len >= 1 && data_len <= 30
171 && key(data, data_len, 0, 1, 30, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
172 && cset82(data, data_len, 0, 1, 30, p_err_no, p_err_posn, err_msg)
173 && key(data, data_len, 0, 1, 30, p_err_no, p_err_posn, err_msg, 0);
174 }
175
176 /* N17,csum,key (Used by GSIN) */
177 static int n17_csum_key(const unsigned char *data,
178 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
179 return data_len == 17
180 && csum(data, data_len, 0, 17, 17, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
181 && key(data, data_len, 0, 17, 17, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
182 && numeric(data, data_len, 0, 17, 17, p_err_no, p_err_posn, err_msg)
183 && csum(data, data_len, 0, 17, 17, p_err_no, p_err_posn, err_msg, 0)
184 && key(data, data_len, 0, 17, 17, p_err_no, p_err_posn, err_msg, 0);
185 }
186
187 /* N13,csum,key (Used by SHIP TO LOC, BILL TO, PURCHASE FROM, SHIP FOR LOC, LOC No., PAY TO, PROD/SERV LOC, PARTY) */
188 static int n13_csum_key(const unsigned char *data,
189 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
190 return data_len == 13
191 && csum(data, data_len, 0, 13, 13, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
192 && key(data, data_len, 0, 13, 13, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
193 && numeric(data, data_len, 0, 13, 13, p_err_no, p_err_posn, err_msg)
194 && csum(data, data_len, 0, 13, 13, p_err_no, p_err_posn, err_msg, 0)
195 && key(data, data_len, 0, 13, 13, p_err_no, p_err_posn, err_msg, 0);
196 }
197
198 /* N3,iso3166 X..9 (Used by SHIP TO POST) */
199 static int n3_iso3166_x__9(const unsigned char *data,
200 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
201 return data_len >= 4 && data_len <= 12
202 && iso3166(data, data_len, 0, 3, 3, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
203 && numeric(data, data_len, 0, 3, 3, p_err_no, p_err_posn, err_msg)
204 && iso3166(data, data_len, 0, 3, 3, p_err_no, p_err_posn, err_msg, 0)
205 && cset82(data, data_len, 3, 1, 9, p_err_no, p_err_posn, err_msg);
206 }
207
208 /* N3,iso3166 (Used by ORIGIN, COUNTRY - PROCESS, COUNTRY - FULL PROCESS) */
209 static int n3_iso3166(const unsigned char *data,
210 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
211 return data_len == 3
212 && iso3166(data, data_len, 0, 3, 3, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
213 && numeric(data, data_len, 0, 3, 3, p_err_no, p_err_posn, err_msg)
214 && iso3166(data, data_len, 0, 3, 3, p_err_no, p_err_posn, err_msg, 0);
215 }
216
217 /* N3,iso3166 [N3],iso3166 [N3],iso3166 [N3],iso3166 [N3],iso3166 (Used by COUNTRY - INITIAL PROCESS, COUNTRY -...) */
218 static int n3_iso3166__n3__iso3166__n3__iso3166__n3__iso3166__n3__iso3166(const unsigned char *data,
219 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
220 return data_len >= 3 && data_len <= 15
221 && iso3166(data, data_len, 0, 3, 3, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
222 && iso3166(data, data_len, 3, 0, 3, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
223 && iso3166(data, data_len, 6, 0, 3, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
224 && iso3166(data, data_len, 9, 0, 3, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
225 && iso3166(data, data_len, 12, 0, 3, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
226 && numeric(data, data_len, 0, 3, 3, p_err_no, p_err_posn, err_msg)
227 && iso3166(data, data_len, 0, 3, 3, p_err_no, p_err_posn, err_msg, 0)
228 && numeric(data, data_len, 3, 0, 3, p_err_no, p_err_posn, err_msg)
229 && iso3166(data, data_len, 3, 0, 3, p_err_no, p_err_posn, err_msg, 0)
230 && numeric(data, data_len, 6, 0, 3, p_err_no, p_err_posn, err_msg)
231 && iso3166(data, data_len, 6, 0, 3, p_err_no, p_err_posn, err_msg, 0)
232 && numeric(data, data_len, 9, 0, 3, p_err_no, p_err_posn, err_msg)
233 && iso3166(data, data_len, 9, 0, 3, p_err_no, p_err_posn, err_msg, 0)
234 && numeric(data, data_len, 12, 0, 3, p_err_no, p_err_posn, err_msg)
235 && iso3166(data, data_len, 12, 0, 3, p_err_no, p_err_posn, err_msg, 0);
236 }
237
238 /* X..3 (Used by ORIGIN SUBDIVISION, AQUATIC SPECIES) */
239 static int x__3(const unsigned char *data,
240 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
241 return data_len >= 1 && data_len <= 3
242 && cset82(data, data_len, 0, 1, 3, p_err_no, p_err_posn, err_msg);
243 }
244
245 /* X..35,pcenc (Used by SHIP TO COMP, SHIP TO NAME, RTN TO COMP, RTN TO NAME, SRV DESCRIPTION) */
246 static int x__35_pcenc(const unsigned char *data,
247 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
248 return data_len >= 1 && data_len <= 35
249 && pcenc(data, data_len, 0, 1, 35, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
250 && cset82(data, data_len, 0, 1, 35, p_err_no, p_err_posn, err_msg)
251 && pcenc(data, data_len, 0, 1, 35, p_err_no, p_err_posn, err_msg, 0);
252 }
253
254 /* X..70,pcenc (Used by SHIP TO ADD1, SHIP TO ADD2, SHIP TO SUB, SHIP TO LOC, SHIP TO REG, RTN TO ADD1, RTN TO ...) */
255 static int x__70_pcenc(const unsigned char *data,
256 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
257 return data_len >= 1 && data_len <= 70
258 && pcenc(data, data_len, 0, 1, 70, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
259 && cset82(data, data_len, 0, 1, 70, p_err_no, p_err_posn, err_msg)
260 && pcenc(data, data_len, 0, 1, 70, p_err_no, p_err_posn, err_msg, 0);
261 }
262
263 /* X2,iso3166alpha2 (Used by SHIP TO COUNTRY, RTN TO COUNTRY) */
264 static int x2_iso3166alpha2(const unsigned char *data,
265 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
266 return data_len == 2
267 && iso3166alpha2(data, data_len, 0, 2, 2, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
268 && cset82(data, data_len, 0, 2, 2, p_err_no, p_err_posn, err_msg)
269 && iso3166alpha2(data, data_len, 0, 2, 2, p_err_no, p_err_posn, err_msg, 0);
270 }
271
272 /* N10,latitude N10,longitude (Used by SHIP TO GEO) */
273 static int n10_latitude_n10_longitude(const unsigned char *data,
274 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
275 return data_len == 20
276 && latitude(data, data_len, 0, 10, 10, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
277 && longitude(data, data_len, 10, 10, 10, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
278 && numeric(data, data_len, 0, 10, 10, p_err_no, p_err_posn, err_msg)
279 && latitude(data, data_len, 0, 10, 10, p_err_no, p_err_posn, err_msg, 0)
280 && numeric(data, data_len, 10, 10, 10, p_err_no, p_err_posn, err_msg)
281 && longitude(data, data_len, 10, 10, 10, p_err_no, p_err_posn, err_msg, 0);
282 }
283
284 /* N1,yesno (Used by DANGEROUS GOODS, AUTH TO LEAVE, SIG REQUIRED) */
285 static int n1_yesno(const unsigned char *data,
286 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
287 return data_len == 1
288 && yesno(data, data_len, 0, 1, 1, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
289 && numeric(data, data_len, 0, 1, 1, p_err_no, p_err_posn, err_msg)
290 && yesno(data, data_len, 0, 1, 1, p_err_no, p_err_posn, err_msg, 0);
291 }
292
293 /* N6,yymmd0 N4,hhmi (Used by NOT BEF DEL DT, NOT AFT DEL DT) */
294 static int n6_yymmd0_n4_hhmi(const unsigned char *data,
295 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
296 return data_len == 10
297 && yymmd0(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
298 && hhmi(data, data_len, 6, 4, 4, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
299 && numeric(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg)
300 && yymmd0(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg, 0)
301 && numeric(data, data_len, 6, 4, 4, p_err_no, p_err_posn, err_msg)
302 && hhmi(data, data_len, 6, 4, 4, p_err_no, p_err_posn, err_msg, 0);
303 }
304
305 /* N6,yymmdd (Used by REL DATE, FIRST FREEZE DATE) */
306 static int n6_yymmdd(const unsigned char *data,
307 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
308 return data_len == 6
309 && yymmdd(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
310 && numeric(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg)
311 && yymmdd(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg, 0);
312 }
313
314 /* N6 [X1],hyphen (Used by MAX TEMP F., MAX TEMP C., MIN TEMP F., MIN TEMP C.) */
315 static int n6__x1__hyphen(const unsigned char *data,
316 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
317 return data_len >= 6 && data_len <= 7
318 && hyphen(data, data_len, 6, 0, 1, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
319 && numeric(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg)
320 && cset82(data, data_len, 6, 0, 1, p_err_no, p_err_posn, err_msg)
321 && hyphen(data, data_len, 6, 0, 1, p_err_no, p_err_posn, err_msg, 0);
322 }
323
324 /* N13 (Used by NSN) */
325 static int n13(const unsigned char *data,
326 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
327 return data_len == 13
328 && numeric(data, data_len, 0, 13, 13, p_err_no, p_err_posn, err_msg);
329 }
330
331 /* N6,yymmdd N4,hhmi (Used by EXPIRY TIME) */
332 static int n6_yymmdd_n4_hhmi(const unsigned char *data,
333 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
334 return data_len == 10
335 && yymmdd(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
336 && hhmi(data, data_len, 6, 4, 4, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
337 && numeric(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg)
338 && yymmdd(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg, 0)
339 && numeric(data, data_len, 6, 4, 4, p_err_no, p_err_posn, err_msg)
340 && hhmi(data, data_len, 6, 4, 4, p_err_no, p_err_posn, err_msg, 0);
341 }
342
343 /* N..4 (Used by ACTIVE POTENCY) */
344 static int n__4(const unsigned char *data,
345 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
346 return data_len >= 1 && data_len <= 4
347 && numeric(data, data_len, 0, 1, 4, p_err_no, p_err_posn, err_msg);
348 }
349
350 /* X..12 (Used by CATCH AREA) */
351 static int x__12(const unsigned char *data,
352 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
353 return data_len >= 1 && data_len <= 12
354 && cset82(data, data_len, 0, 1, 12, p_err_no, p_err_posn, err_msg);
355 }
356
357 /* N6,yymmdd [N6],yymmdd (Used by HARVEST DATE) */
358 static int n6_yymmdd__n6__yymmdd(const unsigned char *data,
359 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
360 return data_len >= 6 && data_len <= 12
361 && yymmdd(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
362 && yymmdd(data, data_len, 6, 0, 6, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
363 && numeric(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg)
364 && yymmdd(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg, 0)
365 && numeric(data, data_len, 6, 0, 6, p_err_no, p_err_posn, err_msg)
366 && yymmdd(data, data_len, 6, 0, 6, p_err_no, p_err_posn, err_msg, 0);
367 }
368
369 /* X..10 (Used by FISHING GEAR TYPE, SUFFIX) */
370 static int x__10(const unsigned char *data,
371 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
372 return data_len >= 1 && data_len <= 10
373 && cset82(data, data_len, 0, 1, 10, p_err_no, p_err_posn, err_msg);
374 }
375
376 /* X..2 (Used by PROD METHOD) */
377 static int x__2(const unsigned char *data,
378 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
379 return data_len >= 1 && data_len <= 2
380 && cset82(data, data_len, 0, 1, 2, p_err_no, p_err_posn, err_msg);
381 }
382
383 /* N6,yymmdd [N4],hhmi (Used by TEST BY DATE) */
384 static int n6_yymmdd__n4__hhmi(const unsigned char *data,
385 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
386 return data_len >= 6 && data_len <= 10
387 && yymmdd(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
388 && hhmi(data, data_len, 6, 0, 4, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
389 && numeric(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg)
390 && yymmdd(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg, 0)
391 && numeric(data, data_len, 6, 0, 4, p_err_no, p_err_posn, err_msg)
392 && hhmi(data, data_len, 6, 0, 4, p_err_no, p_err_posn, err_msg, 0);
393 }
394
395 /* N3,iso3166999 X..27 (Used by PROCESSOR # 0, PROCESSOR # 1, PROCESSOR # 2, PROCESSOR # 3, PROCESSOR # 4, PROC...) */
396 static int n3_iso3166999_x__27(const unsigned char *data,
397 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
398 return data_len >= 4 && data_len <= 30
399 && iso3166999(data, data_len, 0, 3, 3, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
400 && numeric(data, data_len, 0, 3, 3, p_err_no, p_err_posn, err_msg)
401 && iso3166999(data, data_len, 0, 3, 3, p_err_no, p_err_posn, err_msg, 0)
402 && cset82(data, data_len, 3, 1, 27, p_err_no, p_err_posn, err_msg);
403 }
404
405 /* N1 X1 X1 X1,importeridx (Used by UIC+EXT) */
406 static int n1_x1_x1_x1_importeridx(const unsigned char *data,
407 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
408 return data_len == 4
409 && importeridx(data, data_len, 3, 1, 1, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
410 && numeric(data, data_len, 0, 1, 1, p_err_no, p_err_posn, err_msg)
411 && cset82(data, data_len, 1, 1, 1, p_err_no, p_err_posn, err_msg)
412 && cset82(data, data_len, 2, 1, 1, p_err_no, p_err_posn, err_msg)
413 && cset82(data, data_len, 3, 1, 1, p_err_no, p_err_posn, err_msg)
414 && importeridx(data, data_len, 3, 1, 1, p_err_no, p_err_posn, err_msg, 0);
415 }
416
417 /* X..4,packagetype (Used by UFRGT UNIT TYPE) */
418 static int x__4_packagetype(const unsigned char *data,
419 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
420 return data_len >= 1 && data_len <= 4
421 && packagetype(data, data_len, 0, 1, 4, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
422 && cset82(data, data_len, 0, 1, 4, p_err_no, p_err_posn, err_msg)
423 && packagetype(data, data_len, 0, 1, 4, p_err_no, p_err_posn, err_msg, 0);
424 }
425
426 /* X2 X..28 (Used by CERT # 1, CERT # 2, CERT # 3, CERT # 4, CERT # 5, CERT # 6, CERT # 7, CERT # 8, CERT # 9, ...) */
427 static int x2_x__28(const unsigned char *data,
428 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
429 return data_len >= 3 && data_len <= 30
430 && cset82(data, data_len, 0, 2, 2, p_err_no, p_err_posn, err_msg)
431 && cset82(data, data_len, 2, 1, 28, p_err_no, p_err_posn, err_msg);
432 }
433
434 /* N2,mediatype (Used by AIDC MEDIA TYPE) */
435 static int n2_mediatype(const unsigned char *data,
436 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
437 return data_len == 2
438 && mediatype(data, data_len, 0, 2, 2, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
439 && numeric(data, data_len, 0, 2, 2, p_err_no, p_err_posn, err_msg)
440 && mediatype(data, data_len, 0, 2, 2, p_err_no, p_err_posn, err_msg, 0);
441 }
442
443 /* X..25 (Used by VCN, REF No.) */
444 static int x__25(const unsigned char *data,
445 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
446 return data_len >= 1 && data_len <= 25
447 && cset82(data, data_len, 0, 1, 25, p_err_no, p_err_posn, err_msg);
448 }
449
450 /* N8,yyyymmdd (Used by DOB) */
451 static int n8_yyyymmdd(const unsigned char *data,
452 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
453 return data_len == 8
454 && yyyymmdd(data, data_len, 0, 8, 8, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
455 && numeric(data, data_len, 0, 8, 8, p_err_no, p_err_posn, err_msg)
456 && yyyymmdd(data, data_len, 0, 8, 8, p_err_no, p_err_posn, err_msg, 0);
457 }
458
459 /* N8,yyyymmdd N4,hhmi (Used by DOB TIME) */
460 static int n8_yyyymmdd_n4_hhmi(const unsigned char *data,
461 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
462 return data_len == 12
463 && yyyymmdd(data, data_len, 0, 8, 8, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
464 && hhmi(data, data_len, 8, 4, 4, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
465 && numeric(data, data_len, 0, 8, 8, p_err_no, p_err_posn, err_msg)
466 && yyyymmdd(data, data_len, 0, 8, 8, p_err_no, p_err_posn, err_msg, 0)
467 && numeric(data, data_len, 8, 4, 4, p_err_no, p_err_posn, err_msg)
468 && hhmi(data, data_len, 8, 4, 4, p_err_no, p_err_posn, err_msg, 0);
469 }
470
471 /* N1,iso5218 (Used by BIO SEX) */
472 static int n1_iso5218(const unsigned char *data,
473 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
474 return data_len == 1
475 && iso5218(data, data_len, 0, 1, 1, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
476 && numeric(data, data_len, 0, 1, 1, p_err_no, p_err_posn, err_msg)
477 && iso5218(data, data_len, 0, 1, 1, p_err_no, p_err_posn, err_msg, 0);
478 }
479
480 /* X..40,pcenc (Used by FAMILY NAME, GIVEN NAME, BABY) */
481 static int x__40_pcenc(const unsigned char *data,
482 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
483 return data_len >= 1 && data_len <= 40
484 && pcenc(data, data_len, 0, 1, 40, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
485 && cset82(data, data_len, 0, 1, 40, p_err_no, p_err_posn, err_msg)
486 && pcenc(data, data_len, 0, 1, 40, p_err_no, p_err_posn, err_msg, 0);
487 }
488
489 /* X..90,pcenc (Used by FULL NAME) */
490 static int x__90_pcenc(const unsigned char *data,
491 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
492 return data_len >= 1 && data_len <= 90
493 && pcenc(data, data_len, 0, 1, 90, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
494 && cset82(data, data_len, 0, 1, 90, p_err_no, p_err_posn, err_msg)
495 && pcenc(data, data_len, 0, 1, 90, p_err_no, p_err_posn, err_msg, 0);
496 }
497
498 /* X3,posinseqslash (Used by BIRTH SEQUENCE) */
499 static int x3_posinseqslash(const unsigned char *data,
500 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
501 return data_len == 3
502 && posinseqslash(data, data_len, 0, 3, 3, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
503 && cset82(data, data_len, 0, 3, 3, p_err_no, p_err_posn, err_msg)
504 && posinseqslash(data, data_len, 0, 3, 3, p_err_no, p_err_posn, err_msg, 0);
505 }
506
507 /* N4,nonzero N5,nonzero N3,nonzero N1,winding N1 (Used by DIMENSIONS) */
508 static int n4_nonzero_n5_nonzero_n3_nonzero_n1_winding_n1(const unsigned char *data,
509 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
510 return data_len == 14
511 && nonzero(data, data_len, 0, 4, 4, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
512 && nonzero(data, data_len, 4, 5, 5, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
513 && nonzero(data, data_len, 9, 3, 3, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
514 && winding(data, data_len, 12, 1, 1, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
515 && numeric(data, data_len, 0, 4, 4, p_err_no, p_err_posn, err_msg)
516 && nonzero(data, data_len, 0, 4, 4, p_err_no, p_err_posn, err_msg, 0)
517 && numeric(data, data_len, 4, 5, 5, p_err_no, p_err_posn, err_msg)
518 && nonzero(data, data_len, 4, 5, 5, p_err_no, p_err_posn, err_msg, 0)
519 && numeric(data, data_len, 9, 3, 3, p_err_no, p_err_posn, err_msg)
520 && nonzero(data, data_len, 9, 3, 3, p_err_no, p_err_posn, err_msg, 0)
521 && numeric(data, data_len, 12, 1, 1, p_err_no, p_err_posn, err_msg)
522 && winding(data, data_len, 12, 1, 1, p_err_no, p_err_posn, err_msg, 0)
523 && numeric(data, data_len, 13, 1, 1, p_err_no, p_err_posn, err_msg);
524 }
525
526 /* N1,zero N13,csum,key [X..16] (Used by GRAI) */
527 static int n1_zero_n13_csum_key__x__16_(const unsigned char *data,
528 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
529 return data_len >= 14 && data_len <= 30
530 && zero(data, data_len, 0, 1, 1, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
531 && csum(data, data_len, 1, 13, 13, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
532 && key(data, data_len, 1, 13, 13, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
533 && numeric(data, data_len, 0, 1, 1, p_err_no, p_err_posn, err_msg)
534 && zero(data, data_len, 0, 1, 1, p_err_no, p_err_posn, err_msg, 0)
535 && numeric(data, data_len, 1, 13, 13, p_err_no, p_err_posn, err_msg)
536 && csum(data, data_len, 1, 13, 13, p_err_no, p_err_posn, err_msg, 0)
537 && key(data, data_len, 1, 13, 13, p_err_no, p_err_posn, err_msg, 0)
538 && cset82(data, data_len, 14, 0, 16, p_err_no, p_err_posn, err_msg);
539 }
540
541 /* N14,csum N4,pieceoftotal (Used by ITIP, ITIP CONTENT) */
542 static int n14_csum_n4_pieceoftotal(const unsigned char *data,
543 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
544 return data_len == 18
545 && csum(data, data_len, 0, 14, 14, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
546 && pieceoftotal(data, data_len, 14, 4, 4, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
547 && numeric(data, data_len, 0, 14, 14, p_err_no, p_err_posn, err_msg)
548 && csum(data, data_len, 0, 14, 14, p_err_no, p_err_posn, err_msg, 0)
549 && numeric(data, data_len, 14, 4, 4, p_err_no, p_err_posn, err_msg)
550 && pieceoftotal(data, data_len, 14, 4, 4, p_err_no, p_err_posn, err_msg, 0);
551 }
552
553 /* X..34,iban (Used by IBAN) */
554 static int x__34_iban(const unsigned char *data,
555 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
556 return data_len >= 1 && data_len <= 34
557 && iban(data, data_len, 0, 1, 34, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
558 && cset82(data, data_len, 0, 1, 34, p_err_no, p_err_posn, err_msg)
559 && iban(data, data_len, 0, 1, 34, p_err_no, p_err_posn, err_msg, 0);
560 }
561
562 /* N6,yymmdd N2,hh [N2],mi [N2],ss (Used by PROD TIME) */
563 static int n6_yymmdd_n2_hh__n2__mi__n2__ss(const unsigned char *data,
564 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
565 return data_len >= 8 && data_len <= 12
566 && yymmdd(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
567 && hh(data, data_len, 6, 2, 2, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
568 && mi(data, data_len, 8, 0, 2, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
569 && ss(data, data_len, 10, 0, 2, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
570 && numeric(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg)
571 && yymmdd(data, data_len, 0, 6, 6, p_err_no, p_err_posn, err_msg, 0)
572 && numeric(data, data_len, 6, 2, 2, p_err_no, p_err_posn, err_msg)
573 && hh(data, data_len, 6, 2, 2, p_err_no, p_err_posn, err_msg, 0)
574 && numeric(data, data_len, 8, 0, 2, p_err_no, p_err_posn, err_msg)
575 && mi(data, data_len, 8, 0, 2, p_err_no, p_err_posn, err_msg, 0)
576 && numeric(data, data_len, 10, 0, 2, p_err_no, p_err_posn, err_msg)
577 && ss(data, data_len, 10, 0, 2, p_err_no, p_err_posn, err_msg, 0);
578 }
579
580 /* X..50 (Used by OPTSEN) */
581 static int x__50(const unsigned char *data,
582 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
583 return data_len >= 1 && data_len <= 50
584 && cset82(data, data_len, 0, 1, 50, p_err_no, p_err_posn, err_msg);
585 }
586
587 /* Y..30,key (Used by CPID) */
588 static int y__30_key(const unsigned char *data,
589 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
590 return data_len >= 1 && data_len <= 30
591 && key(data, data_len, 0, 1, 30, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
592 && cset39(data, data_len, 0, 1, 30, p_err_no, p_err_posn, err_msg)
593 && key(data, data_len, 0, 1, 30, p_err_no, p_err_posn, err_msg, 0);
594 }
595
596 /* N..12,nozeroprefix (Used by CPID SERIAL) */
597 static int n__12_nozeroprefix(const unsigned char *data,
598 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
599 return data_len >= 1 && data_len <= 12
600 && nozeroprefix(data, data_len, 0, 1, 12, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
601 && numeric(data, data_len, 0, 1, 12, p_err_no, p_err_posn, err_msg)
602 && nozeroprefix(data, data_len, 0, 1, 12, p_err_no, p_err_posn, err_msg, 0);
603 }
604
605 /* X..25,csumalpha,key (Used by GMN) */
606 static int x__25_csumalpha_key(const unsigned char *data,
607 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
608 return data_len >= 1 && data_len <= 25
609 && csumalpha(data, data_len, 0, 1, 25, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
610 && key(data, data_len, 0, 1, 25, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
611 && cset82(data, data_len, 0, 1, 25, p_err_no, p_err_posn, err_msg)
612 && csumalpha(data, data_len, 0, 1, 25, p_err_no, p_err_posn, err_msg, 0)
613 && key(data, data_len, 0, 1, 25, p_err_no, p_err_posn, err_msg, 0);
614 }
615
616 /* X..25,csumalpha,key,hasnondigit (Used by MUDI) */
617 static int x__25_csumalpha_key_hasnondigit(const unsigned char *data,
618 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
619 return data_len >= 1 && data_len <= 25
620 && csumalpha(data, data_len, 0, 1, 25, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
621 && key(data, data_len, 0, 1, 25, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
622 && hasnondigit(data, data_len, 0, 1, 25, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
623 && cset82(data, data_len, 0, 1, 25, p_err_no, p_err_posn, err_msg)
624 && csumalpha(data, data_len, 0, 1, 25, p_err_no, p_err_posn, err_msg, 0)
625 && key(data, data_len, 0, 1, 25, p_err_no, p_err_posn, err_msg, 0)
626 && hasnondigit(data, data_len, 0, 1, 25, p_err_no, p_err_posn, err_msg, 0);
627 }
628
629 /* N..10 (Used by SRIN) */
630 static int n__10(const unsigned char *data,
631 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
632 return data_len >= 1 && data_len <= 10
633 && numeric(data, data_len, 0, 1, 10, p_err_no, p_err_posn, err_msg);
634 }
635
636 /* Z..90 (Used by DIGSIG) */
637 static int z__90(const unsigned char *data,
638 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
639 return data_len >= 1 && data_len <= 90
640 && cset64(data, data_len, 0, 1, 90, p_err_no, p_err_posn, err_msg);
641 }
642
643 /* X..70,couponcode */
644 static int x__70_couponcode(const unsigned char *data,
645 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
646 return data_len >= 1 && data_len <= 70
647 && couponcode(data, data_len, 0, 1, 70, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
648 && cset82(data, data_len, 0, 1, 70, p_err_no, p_err_posn, err_msg)
649 && couponcode(data, data_len, 0, 1, 70, p_err_no, p_err_posn, err_msg, 0);
650 }
651
652 /* X..70,couponposoffer */
653 static int x__70_couponposoffer(const unsigned char *data,
654 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
655 return data_len >= 1 && data_len <= 70
656 && couponposoffer(data, data_len, 0, 1, 70, p_err_no, p_err_posn, err_msg, 1 /*length_only*/)
657 && cset82(data, data_len, 0, 1, 70, p_err_no, p_err_posn, err_msg)
658 && couponposoffer(data, data_len, 0, 1, 70, p_err_no, p_err_posn, err_msg, 0);
659 }
660
661 /* X..70 (Used by PRODUCT URL) */
662 static int x__70(const unsigned char *data,
663 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
664 return data_len >= 1 && data_len <= 70
665 && cset82(data, data_len, 0, 1, 70, p_err_no, p_err_posn, err_msg);
666 }
667
668 /* X..90 (Used by INTERNAL) */
669 static int x__90(const unsigned char *data,
670 const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
671 return data_len >= 1 && data_len <= 90
672 && cset82(data, data_len, 0, 1, 90, p_err_no, p_err_posn, err_msg);
673 }
674
675 /* Entry point. Returns 1 on success, 0 on failure: `*p_err_no` set to 1 if unknown AI, 2 if bad data length */
676 static int gs1_lint(const int ai, const unsigned char *data, const int data_len, int *p_err_no, int *p_err_posn,
677 char err_msg[50]) {
678
679 /* Assume data length failure */
680 *p_err_no = 2;
681
682 if (ai < 100) {
683
684 if (ai == 0) {
685 return n18_csum_key(data, data_len, p_err_no, p_err_posn, err_msg);
686 }
687 if (ai >= 1 && ai <= 3) {
688 return n14_csum_key(data, data_len, p_err_no, p_err_posn, err_msg);
689 }
690 if (ai == 10 || ai == 21 || ai == 22) {
691 return x__20(data, data_len, p_err_no, p_err_posn, err_msg);
692 }
693 if ((ai >= 11 && ai <= 13) || (ai >= 15 && ai <= 17)) {
694 return n6_yymmd0(data, data_len, p_err_no, p_err_posn, err_msg);
695 }
696 if (ai == 20) {
697 return n2(data, data_len, p_err_no, p_err_posn, err_msg);
698 }
699 if (ai == 30 || ai == 37) {
700 return n__8(data, data_len, p_err_no, p_err_posn, err_msg);
701 }
702 if (ai == 90) {
703 return x__30(data, data_len, p_err_no, p_err_posn, err_msg);
704 }
705 if (ai >= 91) {
706 return x__90(data, data_len, p_err_no, p_err_posn, err_msg);
707 }
708
709 } else if (ai < 300) {
710
711 if (ai == 235) {
712 return x__28(data, data_len, p_err_no, p_err_posn, err_msg);
713 }
714 if (ai == 240 || ai == 241 || ai == 250 || ai == 251) {
715 return x__30(data, data_len, p_err_no, p_err_posn, err_msg);
716 }
717 if (ai == 242) {
718 return n__6(data, data_len, p_err_no, p_err_posn, err_msg);
719 }
720 if (ai == 243 || ai == 254) {
721 return x__20(data, data_len, p_err_no, p_err_posn, err_msg);
722 }
723 if (ai == 253) {
724 return n13_csum_key__x__17_(data, data_len, p_err_no, p_err_posn, err_msg);
725 }
726 if (ai == 255) {
727 return n13_csum_key__n__12_(data, data_len, p_err_no, p_err_posn, err_msg);
728 }
729
730 } else if (ai < 500) {
731
732 if (ai == 400 || ai == 403) {
733 return x__30(data, data_len, p_err_no, p_err_posn, err_msg);
734 }
735 if (ai == 401) {
736 return x__30_key(data, data_len, p_err_no, p_err_posn, err_msg);
737 }
738 if (ai == 402) {
739 return n17_csum_key(data, data_len, p_err_no, p_err_posn, err_msg);
740 }
741 if (ai >= 410 && ai <= 417) {
742 return n13_csum_key(data, data_len, p_err_no, p_err_posn, err_msg);
743 }
744 if (ai == 420) {
745 return x__20(data, data_len, p_err_no, p_err_posn, err_msg);
746 }
747 if (ai == 421) {
748 return n3_iso3166_x__9(data, data_len, p_err_no, p_err_posn, err_msg);
749 }
750 if (ai == 422 || ai == 424 || ai == 426) {
751 return n3_iso3166(data, data_len, p_err_no, p_err_posn, err_msg);
752 }
753 if (ai == 423 || ai == 425) {
754 return n3_iso3166__n3__iso3166__n3__iso3166__n3__iso3166__n3__iso3166(data,
755 data_len, p_err_no, p_err_posn, err_msg);
756 }
757 if (ai == 427) {
758 return x__3(data, data_len, p_err_no, p_err_posn, err_msg);
759 }
760
761 } else if (ai < 800) {
762
763 if (ai >= 710 && ai <= 716) {
764 return x__20(data, data_len, p_err_no, p_err_posn, err_msg);
765 }
766
767 } else if (ai < 3200) {
768
769 if ((ai >= 3100 && ai <= 3105) || (ai >= 3110 && ai <= 3115) || (ai >= 3120 && ai <= 3125)
770 || (ai >= 3130 && ai <= 3135) || (ai >= 3140 && ai <= 3145) || (ai >= 3150 && ai <= 3155)
771 || (ai >= 3160 && ai <= 3165)) {
772 return n6(data, data_len, p_err_no, p_err_posn, err_msg);
773 }
774
775 } else if (ai < 3300) {
776
777 if (ai <= 3205 || (ai >= 3210 && ai <= 3215) || (ai >= 3220 && ai <= 3225) || (ai >= 3230 && ai <= 3235)
778 || (ai >= 3240 && ai <= 3245) || (ai >= 3250 && ai <= 3255) || (ai >= 3260 && ai <= 3265)
779 || (ai >= 3270 && ai <= 3275) || (ai >= 3280 && ai <= 3285) || (ai >= 3290 && ai <= 3295)) {
780 return n6(data, data_len, p_err_no, p_err_posn, err_msg);
781 }
782
783 } else if (ai < 3400) {
784
785 if (ai <= 3305 || (ai >= 3310 && ai <= 3315) || (ai >= 3320 && ai <= 3325) || (ai >= 3330 && ai <= 3335)
786 || (ai >= 3340 && ai <= 3345) || (ai >= 3350 && ai <= 3355) || (ai >= 3360 && ai <= 3365)
787 || (ai >= 3370 && ai <= 3375)) {
788 return n6(data, data_len, p_err_no, p_err_posn, err_msg);
789 }
790
791 } else if (ai < 3500) {
792
793 if (ai <= 3405 || (ai >= 3410 && ai <= 3415) || (ai >= 3420 && ai <= 3425) || (ai >= 3430 && ai <= 3435)
794 || (ai >= 3440 && ai <= 3445) || (ai >= 3450 && ai <= 3455) || (ai >= 3460 && ai <= 3465)
795 || (ai >= 3470 && ai <= 3475) || (ai >= 3480 && ai <= 3485) || (ai >= 3490 && ai <= 3495)) {
796 return n6(data, data_len, p_err_no, p_err_posn, err_msg);
797 }
798
799 } else if (ai < 3600) {
800
801 if (ai <= 3505 || (ai >= 3510 && ai <= 3515) || (ai >= 3520 && ai <= 3525) || (ai >= 3530 && ai <= 3535)
802 || (ai >= 3540 && ai <= 3545) || (ai >= 3550 && ai <= 3555) || (ai >= 3560 && ai <= 3565)
803 || (ai >= 3570 && ai <= 3575)) {
804 return n6(data, data_len, p_err_no, p_err_posn, err_msg);
805 }
806
807 } else if (ai < 3700) {
808
809 if (ai <= 3605 || (ai >= 3610 && ai <= 3615) || (ai >= 3620 && ai <= 3625) || (ai >= 3630 && ai <= 3635)
810 || (ai >= 3640 && ai <= 3645) || (ai >= 3650 && ai <= 3655) || (ai >= 3660 && ai <= 3665)
811 || (ai >= 3670 && ai <= 3675) || (ai >= 3680 && ai <= 3685) || (ai >= 3690 && ai <= 3695)) {
812 return n6(data, data_len, p_err_no, p_err_posn, err_msg);
813 }
814
815 } else if (ai < 4000) {
816
817 if ((ai >= 3900 && ai <= 3909) || (ai >= 3920 && ai <= 3929)) {
818 return n__15(data, data_len, p_err_no, p_err_posn, err_msg);
819 }
820 if ((ai >= 3910 && ai <= 3919) || (ai >= 3930 && ai <= 3939)) {
821 return n3_iso4217_n__15(data, data_len, p_err_no, p_err_posn, err_msg);
822 }
823 if (ai >= 3940 && ai <= 3943) {
824 return n4(data, data_len, p_err_no, p_err_posn, err_msg);
825 }
826 if (ai >= 3950 && ai <= 3955) {
827 return n6(data, data_len, p_err_no, p_err_posn, err_msg);
828 }
829
830 } else if (ai < 4400) {
831
832 if (ai == 4300 || ai == 4301 || ai == 4310 || ai == 4311 || ai == 4320) {
833 return x__35_pcenc(data, data_len, p_err_no, p_err_posn, err_msg);
834 }
835 if ((ai >= 4302 && ai <= 4306) || (ai >= 4312 && ai <= 4316)) {
836 return x__70_pcenc(data, data_len, p_err_no, p_err_posn, err_msg);
837 }
838 if (ai == 4307 || ai == 4317) {
839 return x2_iso3166alpha2(data, data_len, p_err_no, p_err_posn, err_msg);
840 }
841 if (ai == 4308 || ai == 4319) {
842 return x__30(data, data_len, p_err_no, p_err_posn, err_msg);
843 }
844 if (ai == 4309) {
845 return n10_latitude_n10_longitude(data, data_len, p_err_no, p_err_posn, err_msg);
846 }
847 if (ai == 4318) {
848 return x__20(data, data_len, p_err_no, p_err_posn, err_msg);
849 }
850 if (ai >= 4321 && ai <= 4323) {
851 return n1_yesno(data, data_len, p_err_no, p_err_posn, err_msg);
852 }
853 if (ai == 4324 || ai == 4325) {
854 return n6_yymmd0_n4_hhmi(data, data_len, p_err_no, p_err_posn, err_msg);
855 }
856 if (ai == 4326) {
857 return n6_yymmdd(data, data_len, p_err_no, p_err_posn, err_msg);
858 }
859 if (ai >= 4330 && ai <= 4333) {
860 return n6__x1__hyphen(data, data_len, p_err_no, p_err_posn, err_msg);
861 }
862
863 } else if (ai < 7100) {
864
865 if (ai == 7001) {
866 return n13(data, data_len, p_err_no, p_err_posn, err_msg);
867 }
868 if (ai == 7002) {
869 return x__30(data, data_len, p_err_no, p_err_posn, err_msg);
870 }
871 if (ai == 7003) {
872 return n6_yymmdd_n4_hhmi(data, data_len, p_err_no, p_err_posn, err_msg);
873 }
874 if (ai == 7004) {
875 return n__4(data, data_len, p_err_no, p_err_posn, err_msg);
876 }
877 if (ai == 7005) {
878 return x__12(data, data_len, p_err_no, p_err_posn, err_msg);
879 }
880 if (ai == 7006) {
881 return n6_yymmdd(data, data_len, p_err_no, p_err_posn, err_msg);
882 }
883 if (ai == 7007) {
884 return n6_yymmdd__n6__yymmdd(data, data_len, p_err_no, p_err_posn, err_msg);
885 }
886 if (ai == 7008) {
887 return x__3(data, data_len, p_err_no, p_err_posn, err_msg);
888 }
889 if (ai == 7009) {
890 return x__10(data, data_len, p_err_no, p_err_posn, err_msg);
891 }
892 if (ai == 7010) {
893 return x__2(data, data_len, p_err_no, p_err_posn, err_msg);
894 }
895 if (ai == 7011) {
896 return n6_yymmdd__n4__hhmi(data, data_len, p_err_no, p_err_posn, err_msg);
897 }
898 if (ai >= 7020 && ai <= 7022) {
899 return x__20(data, data_len, p_err_no, p_err_posn, err_msg);
900 }
901 if (ai == 7023) {
902 return x__30_key(data, data_len, p_err_no, p_err_posn, err_msg);
903 }
904 if (ai >= 7030 && ai <= 7039) {
905 return n3_iso3166999_x__27(data, data_len, p_err_no, p_err_posn, err_msg);
906 }
907 if (ai == 7040) {
908 return n1_x1_x1_x1_importeridx(data, data_len, p_err_no, p_err_posn, err_msg);
909 }
910 if (ai == 7041) {
911 return x__4_packagetype(data, data_len, p_err_no, p_err_posn, err_msg);
912 }
913
914 } else if (ai < 7300) {
915
916 if (ai >= 7230 && ai <= 7239) {
917 return x2_x__28(data, data_len, p_err_no, p_err_posn, err_msg);
918 }
919 if (ai == 7240) {
920 return x__20(data, data_len, p_err_no, p_err_posn, err_msg);
921 }
922 if (ai == 7241) {
923 return n2_mediatype(data, data_len, p_err_no, p_err_posn, err_msg);
924 }
925 if (ai == 7242) {
926 return x__25(data, data_len, p_err_no, p_err_posn, err_msg);
927 }
928 if (ai == 7250) {
929 return n8_yyyymmdd(data, data_len, p_err_no, p_err_posn, err_msg);
930 }
931 if (ai == 7251) {
932 return n8_yyyymmdd_n4_hhmi(data, data_len, p_err_no, p_err_posn, err_msg);
933 }
934 if (ai == 7252) {
935 return n1_iso5218(data, data_len, p_err_no, p_err_posn, err_msg);
936 }
937 if (ai == 7253 || ai == 7254 || ai == 7259) {
938 return x__40_pcenc(data, data_len, p_err_no, p_err_posn, err_msg);
939 }
940 if (ai == 7255) {
941 return x__10(data, data_len, p_err_no, p_err_posn, err_msg);
942 }
943 if (ai == 7256) {
944 return x__90_pcenc(data, data_len, p_err_no, p_err_posn, err_msg);
945 }
946 if (ai == 7257) {
947 return x__70_pcenc(data, data_len, p_err_no, p_err_posn, err_msg);
948 }
949 if (ai == 7258) {
950 return x3_posinseqslash(data, data_len, p_err_no, p_err_posn, err_msg);
951 }
952
953 } else if (ai < 8100) {
954
955 if (ai == 8001) {
956 return n4_nonzero_n5_nonzero_n3_nonzero_n1_winding_n1(data, data_len, p_err_no, p_err_posn, err_msg);
957 }
958 if (ai == 8002 || ai == 8012) {
959 return x__20(data, data_len, p_err_no, p_err_posn, err_msg);
960 }
961 if (ai == 8003) {
962 return n1_zero_n13_csum_key__x__16_(data, data_len, p_err_no, p_err_posn, err_msg);
963 }
964 if (ai == 8004) {
965 return x__30_key(data, data_len, p_err_no, p_err_posn, err_msg);
966 }
967 if (ai == 8005) {
968 return n6(data, data_len, p_err_no, p_err_posn, err_msg);
969 }
970 if (ai == 8006 || ai == 8026) {
971 return n14_csum_n4_pieceoftotal(data, data_len, p_err_no, p_err_posn, err_msg);
972 }
973 if (ai == 8007) {
974 return x__34_iban(data, data_len, p_err_no, p_err_posn, err_msg);
975 }
976 if (ai == 8008) {
977 return n6_yymmdd_n2_hh__n2__mi__n2__ss(data, data_len, p_err_no, p_err_posn, err_msg);
978 }
979 if (ai == 8009) {
980 return x__50(data, data_len, p_err_no, p_err_posn, err_msg);
981 }
982 if (ai == 8010) {
983 return y__30_key(data, data_len, p_err_no, p_err_posn, err_msg);
984 }
985 if (ai == 8011) {
986 return n__12_nozeroprefix(data, data_len, p_err_no, p_err_posn, err_msg);
987 }
988 if (ai == 8013) {
989 return x__25_csumalpha_key(data, data_len, p_err_no, p_err_posn, err_msg);
990 }
991 if (ai == 8014) {
992 return x__25_csumalpha_key_hasnondigit(data, data_len, p_err_no, p_err_posn, err_msg);
993 }
994 if (ai == 8017 || ai == 8018) {
995 return n18_csum_key(data, data_len, p_err_no, p_err_posn, err_msg);
996 }
997 if (ai == 8019) {
998 return n__10(data, data_len, p_err_no, p_err_posn, err_msg);
999 }
1000 if (ai == 8020) {
1001 return x__25(data, data_len, p_err_no, p_err_posn, err_msg);
1002 }
1003 if (ai == 8030) {
1004 return z__90(data, data_len, p_err_no, p_err_posn, err_msg);
1005 }
1006
1007 } else if (ai < 8200) {
1008
1009 if (ai == 8110) {
1010 return x__70_couponcode(data, data_len, p_err_no, p_err_posn, err_msg);
1011 }
1012 if (ai == 8111) {
1013 return n4(data, data_len, p_err_no, p_err_posn, err_msg);
1014 }
1015 if (ai == 8112) {
1016 return x__70_couponposoffer(data, data_len, p_err_no, p_err_posn, err_msg);
1017 }
1018
1019 } else if (ai < 8300) {
1020
1021 if (ai == 8200) {
1022 return x__70(data, data_len, p_err_no, p_err_posn, err_msg);
1023 }
1024 }
1025
1026 /* Unknown AI */
1027 *p_err_no = 1;
1028 return 0;
1029 }
1030
1031 #endif /* Z_GS1_LINT_H */