Used to ensure that an AI component conforms to the modernised North American positive offer file coupon code standard, as carried in AI (8112).
72{
73
74 size_t pos;
75 int vli;
76 const char *p, *q;
77
78 assert(data);
79
80
81
82
83
84
85 for (pos = 0; pos < data_len; pos++) {
89 pos,
90 1
91 );
92 }
93
94 p = data;
95 q = data + data_len;
96
97
98
99
100
101
102
103
107 0,
108 (size_t)(q - data)
109 );
110
114 (size_t)(p - data),
115 1
116 );
117
118
119
120
121
122
123
127 0,
128 (size_t)(q - data)
129 );
133 (size_t)(p - data),
134 1
135 );
136 vli = *p - '0' + 6;
137
141 (p == q) ? 0 : (size_t)(p - data),
142 (p == q) ? (size_t)(q - data) : (size_t)(q - p)
143 );
144
145 p += vli;
146
147
148
149
150
151
155 (p == q) ? 0 : (size_t)(p - data),
156 (p == q) ? (size_t)(q - data) : (size_t)(q - p)
157 );
158
159 p += 6;
160
161
162
163
164
165
166
170 0,
171 (size_t)(q - data)
172 );
173 vli = *p - '0' + 6;
174
178 (p == q) ? 0 : (size_t)(p - data),
179 (p == q) ? (size_t)(q - data) : (size_t)(q - p)
180 );
181
182 p += vli;
183
184
185
186
187
188
192 (size_t)(p - data),
193 (size_t)(q - p)
194 );
195
197
198}
#define GS1_LINTER_UNLIKELY(x)
Implementation may provide hint to the compiler that the expression is likely to be false.
Definition gs1syntaxdictionary-utils.h:76
#define GS1_LINTER_RETURN_ERROR(error, position, length)
Return from a linter indicating that a problem was detected with the given data.
Definition gs1syntaxdictionary-utils.h:103
#define GS1_LINTER_RETURN_OK
Return from a linter indicating that no problem was detected with the given data.
Definition gs1syntaxdictionary-utils.h:88
@ GS1_LINTER_COUPON_MISSING_FORMAT_CODE
The coupon's Format Code is missing.
Definition gs1syntaxdictionary.h:123
@ GS1_LINTER_COUPON_INVALID_FORMAT_CODE
The coupon's Format Code must be "0" or "1".
Definition gs1syntaxdictionary.h:124
@ GS1_LINTER_COUPON_MISSING_SERIAL_NUMBER_VLI
The coupon's Serial Number VLI is missing.
Definition gs1syntaxdictionary.h:129
@ GS1_LINTER_COUPON_TRUNCATED_SERIAL_NUMBER
The coupon's Serial Number is shorter than what is indicated by its VLI.
Definition gs1syntaxdictionary.h:130
@ GS1_LINTER_COUPON_MISSING_FUNDER_VLI
The coupon's Funder VLI is missing.
Definition gs1syntaxdictionary.h:125
@ GS1_LINTER_COUPON_TRUNCATED_OFFER_CODE
The coupon's Offer Code is shorter than the required six digits.
Definition gs1syntaxdictionary.h:128
@ GS1_LINTER_COUPON_EXCESS_DATA
The coupon contains excess data after the recognised optional fields.
Definition gs1syntaxdictionary.h:178
@ GS1_LINTER_COUPON_INVALID_FUNDER_LENGTH
The coupon's Funder VLI must be "0" to "6".
Definition gs1syntaxdictionary.h:126
@ GS1_LINTER_NON_DIGIT_CHARACTER
A non-digit character was found where a digit is expected.
Definition gs1syntaxdictionary.h:78
@ GS1_LINTER_COUPON_TRUNCATED_FUNDER
The coupon's Funder is shorter than what is indicated by its VLI.
Definition gs1syntaxdictionary.h:127