blob: 439468bd46b61490e079df15c40e4d21663e707b [file] [log] [blame]
vlm12164c42007-12-03 13:41:36 +00001
2/*** <<< INCLUDES [T] >>> ***/
3
4#include <NativeInteger.h>
5#include <constr_SEQUENCE.h>
6
7/*** <<< TYPE-DECLS [T] >>> ***/
8
9typedef struct T {
10 long small32range;
11 long full32range;
12 unsigned long unsigned32;
13 unsigned long unsplit32;
14
15 /* Context for parsing across buffer boundaries */
16 asn_struct_ctx_t _asn_ctx;
17} T_t;
18
19/*** <<< FUNC-DECLS [T] >>> ***/
20
21/* extern asn_TYPE_descriptor_t asn_DEF_unsigned32_4; // (Use -fall-defs-global to expose) */
22/* extern asn_TYPE_descriptor_t asn_DEF_unsplit32_5; // (Use -fall-defs-global to expose) */
23extern asn_TYPE_descriptor_t asn_DEF_T;
24
25/*** <<< CODE [T] >>> ***/
26
27static int
28unsigned32_4_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
29 asn_app_constraint_failed_f *ctfailcb, void *app_key) {
30 unsigned long value;
31
32 if(!sptr) {
33 _ASN_CTFAIL(app_key, td, sptr,
34 "%s: value not given (%s:%d)",
35 td->name, __FILE__, __LINE__);
36 return -1;
37 }
38
39 value = *(const unsigned long *)sptr;
40
41 /* Constraint check succeeded */
42 return 0;
43}
44
45/*
46 * This type is implemented using NativeInteger,
47 * so here we adjust the DEF accordingly.
48 */
49static void
50unsigned32_4_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
51 td->free_struct = asn_DEF_NativeInteger.free_struct;
52 td->print_struct = asn_DEF_NativeInteger.print_struct;
53 td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
54 td->der_encoder = asn_DEF_NativeInteger.der_encoder;
55 td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
56 td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
57 td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
58 td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
59 if(!td->per_constraints)
60 td->per_constraints = asn_DEF_NativeInteger.per_constraints;
61 td->elements = asn_DEF_NativeInteger.elements;
62 td->elements_count = asn_DEF_NativeInteger.elements_count;
63 /* td->specifics = asn_DEF_NativeInteger.specifics; // Defined explicitly */
64}
65
66static void
67unsigned32_4_free(asn_TYPE_descriptor_t *td,
68 void *struct_ptr, int contents_only) {
69 unsigned32_4_inherit_TYPE_descriptor(td);
70 td->free_struct(td, struct_ptr, contents_only);
71}
72
73static int
74unsigned32_4_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
75 int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
76 unsigned32_4_inherit_TYPE_descriptor(td);
77 return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
78}
79
80static asn_dec_rval_t
81unsigned32_4_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
82 void **structure, const void *bufptr, size_t size, int tag_mode) {
83 unsigned32_4_inherit_TYPE_descriptor(td);
84 return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
85}
86
87static asn_enc_rval_t
88unsigned32_4_encode_der(asn_TYPE_descriptor_t *td,
89 void *structure, int tag_mode, ber_tlv_tag_t tag,
90 asn_app_consume_bytes_f *cb, void *app_key) {
91 unsigned32_4_inherit_TYPE_descriptor(td);
92 return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
93}
94
95static asn_dec_rval_t
96unsigned32_4_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
97 void **structure, const char *opt_mname, const void *bufptr, size_t size) {
98 unsigned32_4_inherit_TYPE_descriptor(td);
99 return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
100}
101
102static asn_enc_rval_t
103unsigned32_4_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
104 int ilevel, enum xer_encoder_flags_e flags,
105 asn_app_consume_bytes_f *cb, void *app_key) {
106 unsigned32_4_inherit_TYPE_descriptor(td);
107 return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
108}
109
110static asn_dec_rval_t
111unsigned32_4_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
112 asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
113 unsigned32_4_inherit_TYPE_descriptor(td);
114 return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
115}
116
117static asn_enc_rval_t
118unsigned32_4_encode_uper(asn_TYPE_descriptor_t *td,
119 asn_per_constraints_t *constraints,
120 void *structure, asn_per_outp_t *per_out) {
121 unsigned32_4_inherit_TYPE_descriptor(td);
122 return td->uper_encoder(td, constraints, structure, per_out);
123}
124
125static int
126unsplit32_5_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
127 asn_app_constraint_failed_f *ctfailcb, void *app_key) {
128 unsigned long value;
129
130 if(!sptr) {
131 _ASN_CTFAIL(app_key, td, sptr,
132 "%s: value not given (%s:%d)",
133 td->name, __FILE__, __LINE__);
134 return -1;
135 }
136
137 value = *(const unsigned long *)sptr;
138
139 if(((value >= 5 && value <= 500) || (value >= 600 && value <= 4294967290))) {
140 /* Constraint check succeeded */
141 return 0;
142 } else {
143 _ASN_CTFAIL(app_key, td, sptr,
144 "%s: constraint failed (%s:%d)",
145 td->name, __FILE__, __LINE__);
146 return -1;
147 }
148}
149
150/*
151 * This type is implemented using NativeInteger,
152 * so here we adjust the DEF accordingly.
153 */
154static void
155unsplit32_5_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
156 td->free_struct = asn_DEF_NativeInteger.free_struct;
157 td->print_struct = asn_DEF_NativeInteger.print_struct;
158 td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
159 td->der_encoder = asn_DEF_NativeInteger.der_encoder;
160 td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
161 td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
162 td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
163 td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
164 if(!td->per_constraints)
165 td->per_constraints = asn_DEF_NativeInteger.per_constraints;
166 td->elements = asn_DEF_NativeInteger.elements;
167 td->elements_count = asn_DEF_NativeInteger.elements_count;
168 /* td->specifics = asn_DEF_NativeInteger.specifics; // Defined explicitly */
169}
170
171static void
172unsplit32_5_free(asn_TYPE_descriptor_t *td,
173 void *struct_ptr, int contents_only) {
174 unsplit32_5_inherit_TYPE_descriptor(td);
175 td->free_struct(td, struct_ptr, contents_only);
176}
177
178static int
179unsplit32_5_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
180 int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
181 unsplit32_5_inherit_TYPE_descriptor(td);
182 return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
183}
184
185static asn_dec_rval_t
186unsplit32_5_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
187 void **structure, const void *bufptr, size_t size, int tag_mode) {
188 unsplit32_5_inherit_TYPE_descriptor(td);
189 return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
190}
191
192static asn_enc_rval_t
193unsplit32_5_encode_der(asn_TYPE_descriptor_t *td,
194 void *structure, int tag_mode, ber_tlv_tag_t tag,
195 asn_app_consume_bytes_f *cb, void *app_key) {
196 unsplit32_5_inherit_TYPE_descriptor(td);
197 return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
198}
199
200static asn_dec_rval_t
201unsplit32_5_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
202 void **structure, const char *opt_mname, const void *bufptr, size_t size) {
203 unsplit32_5_inherit_TYPE_descriptor(td);
204 return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
205}
206
207static asn_enc_rval_t
208unsplit32_5_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
209 int ilevel, enum xer_encoder_flags_e flags,
210 asn_app_consume_bytes_f *cb, void *app_key) {
211 unsplit32_5_inherit_TYPE_descriptor(td);
212 return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
213}
214
215static asn_dec_rval_t
216unsplit32_5_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
217 asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
218 unsplit32_5_inherit_TYPE_descriptor(td);
219 return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
220}
221
222static asn_enc_rval_t
223unsplit32_5_encode_uper(asn_TYPE_descriptor_t *td,
224 asn_per_constraints_t *constraints,
225 void *structure, asn_per_outp_t *per_out) {
226 unsplit32_5_inherit_TYPE_descriptor(td);
227 return td->uper_encoder(td, constraints, structure, per_out);
228}
229
230static int
231memb_small32range_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
232 asn_app_constraint_failed_f *ctfailcb, void *app_key) {
233 long value;
234
235 if(!sptr) {
236 _ASN_CTFAIL(app_key, td, sptr,
237 "%s: value not given (%s:%d)",
238 td->name, __FILE__, __LINE__);
239 return -1;
240 }
241
242 value = *(const long *)sptr;
243
244 if((value >= -2000000000 && value <= 2000000000)) {
245 /* Constraint check succeeded */
246 return 0;
247 } else {
248 _ASN_CTFAIL(app_key, td, sptr,
249 "%s: constraint failed (%s:%d)",
250 td->name, __FILE__, __LINE__);
251 return -1;
252 }
253}
254
255static int
256memb_full32range_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
257 asn_app_constraint_failed_f *ctfailcb, void *app_key) {
258 long value;
259
260 if(!sptr) {
261 _ASN_CTFAIL(app_key, td, sptr,
262 "%s: value not given (%s:%d)",
263 td->name, __FILE__, __LINE__);
264 return -1;
265 }
266
267 value = *(const long *)sptr;
268
269 if((value >= (-2147483647L - 1) && value <= 2147483647)) {
270 /* Constraint check succeeded */
271 return 0;
272 } else {
273 _ASN_CTFAIL(app_key, td, sptr,
274 "%s: constraint failed (%s:%d)",
275 td->name, __FILE__, __LINE__);
276 return -1;
277 }
278}
279
280static int
281memb_unsigned32_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
282 asn_app_constraint_failed_f *ctfailcb, void *app_key) {
283 unsigned long value;
284
285 if(!sptr) {
286 _ASN_CTFAIL(app_key, td, sptr,
287 "%s: value not given (%s:%d)",
288 td->name, __FILE__, __LINE__);
289 return -1;
290 }
291
292 value = *(const unsigned long *)sptr;
293
294 /* Constraint check succeeded */
295 return 0;
296}
297
298static int
299memb_unsplit32_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
300 asn_app_constraint_failed_f *ctfailcb, void *app_key) {
301 unsigned long value;
302
303 if(!sptr) {
304 _ASN_CTFAIL(app_key, td, sptr,
305 "%s: value not given (%s:%d)",
306 td->name, __FILE__, __LINE__);
307 return -1;
308 }
309
310 value = *(const unsigned long *)sptr;
311
312 if(((value >= 5 && value <= 500) || (value >= 600 && value <= 4294967290))) {
313 /* Constraint check succeeded */
314 return 0;
315 } else {
316 _ASN_CTFAIL(app_key, td, sptr,
317 "%s: constraint failed (%s:%d)",
318 td->name, __FILE__, __LINE__);
319 return -1;
320 }
321}
322
323
324/*** <<< CTDEFS [T] >>> ***/
325
326static asn_per_constraints_t asn_PER_type_unsigned32_constr_4 = {
327 { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */,
328 { APC_UNCONSTRAINED, -1, -1, 0, 0 },
329 0, 0 /* No PER value map */
330};
331static asn_per_constraints_t asn_PER_type_unsplit32_constr_5 = {
332 { APC_CONSTRAINED, 32, -1, 5, 4294967290 } /* (5..4294967290) */,
333 { APC_UNCONSTRAINED, -1, -1, 0, 0 },
334 0, 0 /* No PER value map */
335};
336static asn_per_constraints_t asn_PER_memb_small32range_constr_2 = {
337 { APC_CONSTRAINED, 32, -1, -2000000000, 2000000000 } /* (-2000000000..2000000000) */,
338 { APC_UNCONSTRAINED, -1, -1, 0, 0 },
339 0, 0 /* No PER value map */
340};
341static asn_per_constraints_t asn_PER_memb_full32range_constr_3 = {
342 { APC_CONSTRAINED, 32, -1, (-2147483647L - 1), 2147483647 } /* (-2147483648..2147483647) */,
343 { APC_UNCONSTRAINED, -1, -1, 0, 0 },
344 0, 0 /* No PER value map */
345};
346static asn_per_constraints_t asn_PER_memb_unsigned32_constr_4 = {
347 { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */,
348 { APC_UNCONSTRAINED, -1, -1, 0, 0 },
349 0, 0 /* No PER value map */
350};
351static asn_per_constraints_t asn_PER_memb_unsplit32_constr_5 = {
352 { APC_CONSTRAINED, 32, -1, 5, 4294967290 } /* (5..4294967290) */,
353 { APC_UNCONSTRAINED, -1, -1, 0, 0 },
354 0, 0 /* No PER value map */
355};
356
357/*** <<< STAT-DEFS [T] >>> ***/
358
359static asn_INTEGER_specifics_t asn_SPC_unsigned32_specs_4 = {
360 0, 0, 0, 0, 0,
361 0, /* Native long size */
362 1 /* Unsigned representation */
363};
364static ber_tlv_tag_t asn_DEF_unsigned32_tags_4[] = {
365 (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
366 (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
367};
368static /* Use -fall-defs-global to expose */
369asn_TYPE_descriptor_t asn_DEF_unsigned32_4 = {
370 "unsigned32",
371 "unsigned32",
372 unsigned32_4_free,
373 unsigned32_4_print,
374 unsigned32_4_constraint,
375 unsigned32_4_decode_ber,
376 unsigned32_4_encode_der,
377 unsigned32_4_decode_xer,
378 unsigned32_4_encode_xer,
379 unsigned32_4_decode_uper,
380 unsigned32_4_encode_uper,
381 0, /* Use generic outmost tag fetcher */
382 asn_DEF_unsigned32_tags_4,
383 sizeof(asn_DEF_unsigned32_tags_4)
384 /sizeof(asn_DEF_unsigned32_tags_4[0]) - 1, /* 1 */
385 asn_DEF_unsigned32_tags_4, /* Same as above */
386 sizeof(asn_DEF_unsigned32_tags_4)
387 /sizeof(asn_DEF_unsigned32_tags_4[0]), /* 2 */
388 &asn_PER_type_unsigned32_constr_4,
389 0, 0, /* No members */
390 &asn_SPC_unsigned32_specs_4 /* Additional specs */
391};
392
393static asn_INTEGER_specifics_t asn_SPC_unsplit32_specs_5 = {
394 0, 0, 0, 0, 0,
395 0, /* Native long size */
396 1 /* Unsigned representation */
397};
398static ber_tlv_tag_t asn_DEF_unsplit32_tags_5[] = {
399 (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
400 (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
401};
402static /* Use -fall-defs-global to expose */
403asn_TYPE_descriptor_t asn_DEF_unsplit32_5 = {
404 "unsplit32",
405 "unsplit32",
406 unsplit32_5_free,
407 unsplit32_5_print,
408 unsplit32_5_constraint,
409 unsplit32_5_decode_ber,
410 unsplit32_5_encode_der,
411 unsplit32_5_decode_xer,
412 unsplit32_5_encode_xer,
413 unsplit32_5_decode_uper,
414 unsplit32_5_encode_uper,
415 0, /* Use generic outmost tag fetcher */
416 asn_DEF_unsplit32_tags_5,
417 sizeof(asn_DEF_unsplit32_tags_5)
418 /sizeof(asn_DEF_unsplit32_tags_5[0]) - 1, /* 1 */
419 asn_DEF_unsplit32_tags_5, /* Same as above */
420 sizeof(asn_DEF_unsplit32_tags_5)
421 /sizeof(asn_DEF_unsplit32_tags_5[0]), /* 2 */
422 &asn_PER_type_unsplit32_constr_5,
423 0, 0, /* No members */
424 &asn_SPC_unsplit32_specs_5 /* Additional specs */
425};
426
427static asn_TYPE_member_t asn_MBR_T_1[] = {
428 { ATF_NOFLAGS, 0, offsetof(struct T, small32range),
429 .tag = (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
430 .tag_mode = -1, /* IMPLICIT tag at current level */
431 .type = &asn_DEF_NativeInteger,
432 .memb_constraints = memb_small32range_constraint_1,
433 .per_constraints = &asn_PER_memb_small32range_constr_2,
434 .default_value = 0,
435 .name = "small32range"
436 },
437 { ATF_NOFLAGS, 0, offsetof(struct T, full32range),
438 .tag = (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
439 .tag_mode = -1, /* IMPLICIT tag at current level */
440 .type = &asn_DEF_NativeInteger,
441 .memb_constraints = memb_full32range_constraint_1,
442 .per_constraints = &asn_PER_memb_full32range_constr_3,
443 .default_value = 0,
444 .name = "full32range"
445 },
446 { ATF_NOFLAGS, 0, offsetof(struct T, unsigned32),
447 .tag = (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
448 .tag_mode = -1, /* IMPLICIT tag at current level */
449 .type = &asn_DEF_unsigned32_4,
450 .memb_constraints = memb_unsigned32_constraint_1,
451 .per_constraints = &asn_PER_memb_unsigned32_constr_4,
452 .default_value = 0,
453 .name = "unsigned32"
454 },
455 { ATF_NOFLAGS, 0, offsetof(struct T, unsplit32),
456 .tag = (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
457 .tag_mode = -1, /* IMPLICIT tag at current level */
458 .type = &asn_DEF_unsplit32_5,
459 .memb_constraints = memb_unsplit32_constraint_1,
460 .per_constraints = &asn_PER_memb_unsplit32_constr_5,
461 .default_value = 0,
462 .name = "unsplit32"
463 },
464};
465static ber_tlv_tag_t asn_DEF_T_tags_1[] = {
466 (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
467};
468static asn_TYPE_tag2member_t asn_MAP_T_tag2el_1[] = {
469 { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* small32range at 15 */
470 { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* full32range at 16 */
471 { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* unsigned32 at 17 */
472 { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* unsplit32 at 18 */
473};
474static asn_SEQUENCE_specifics_t asn_SPC_T_specs_1 = {
475 sizeof(struct T),
476 offsetof(struct T, _asn_ctx),
477 asn_MAP_T_tag2el_1,
478 4, /* Count of tags in the map */
479 0, 0, 0, /* Optional elements (not needed) */
480 -1, /* Start extensions */
481 -1 /* Stop extensions */
482};
483asn_TYPE_descriptor_t asn_DEF_T = {
484 "T",
485 "T",
486 SEQUENCE_free,
487 SEQUENCE_print,
488 SEQUENCE_constraint,
489 SEQUENCE_decode_ber,
490 SEQUENCE_encode_der,
491 SEQUENCE_decode_xer,
492 SEQUENCE_encode_xer,
493 SEQUENCE_decode_uper,
494 SEQUENCE_encode_uper,
495 0, /* Use generic outmost tag fetcher */
496 asn_DEF_T_tags_1,
497 sizeof(asn_DEF_T_tags_1)
498 /sizeof(asn_DEF_T_tags_1[0]), /* 1 */
499 asn_DEF_T_tags_1, /* Same as above */
500 sizeof(asn_DEF_T_tags_1)
501 /sizeof(asn_DEF_T_tags_1[0]), /* 1 */
502 0, /* No PER visible constraints */
503 asn_MBR_T_1,
504 4, /* Elements count */
505 &asn_SPC_T_specs_1 /* Additional specs */
506};
507