blob: f12b9024a687b354fffb5996fa9e04f2a694ff9e [file] [log] [blame]
vlmde592d72004-09-14 12:46:58 +00001
2/*** <<< INCLUDES [T1] >>> ***/
3
4#include <T2.h>
5
6/*** <<< TYPE-DECLS [T1] >>> ***/
7
8
9typedef T2_t T1_t;
10
11/*** <<< FUNC-DECLS [T1] >>> ***/
12
13extern asn1_TYPE_descriptor_t asn1_DEF_T1;
vlm39ba4c42004-09-22 16:06:28 +000014asn_struct_free_f T1_free;
15asn_struct_print_f T1_print;
vlmde592d72004-09-14 12:46:58 +000016asn_constr_check_f T1_constraint;
17ber_type_decoder_f T1_decode_ber;
18der_type_encoder_f T1_encode_der;
vlm39ba4c42004-09-22 16:06:28 +000019xer_type_encoder_f T1_encode_xer;
vlmde592d72004-09-14 12:46:58 +000020
21/*** <<< CODE [T1] >>> ***/
22
23int
24T1_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
25 asn_app_consume_bytes_f *app_errlog, void *app_key) {
vlmaafc9412004-09-26 13:12:56 +000026 /* Replace with underlying type checker */
vlmde592d72004-09-14 12:46:58 +000027 td->check_constraints = asn1_DEF_T2.check_constraints;
vlmaafc9412004-09-26 13:12:56 +000028 return td->check_constraints(td, sptr, app_errlog, app_key);
vlmde592d72004-09-14 12:46:58 +000029}
30
31/*
32 * This type is implemented using T2,
vlmcb0b7fc2004-09-23 22:14:58 +000033 * so here we adjust the DEF accordingly.
vlmde592d72004-09-14 12:46:58 +000034 */
35static void
36T1_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
vlmde592d72004-09-14 12:46:58 +000037 td->free_struct = asn1_DEF_T2.free_struct;
38 td->print_struct = asn1_DEF_T2.print_struct;
vlm39ba4c42004-09-22 16:06:28 +000039 td->ber_decoder = asn1_DEF_T2.ber_decoder;
40 td->der_encoder = asn1_DEF_T2.der_encoder;
41 td->xer_decoder = asn1_DEF_T2.xer_decoder;
42 td->xer_encoder = asn1_DEF_T2.xer_encoder;
vlmde592d72004-09-14 12:46:58 +000043 td->elements = asn1_DEF_T2.elements;
44 td->elements_count = asn1_DEF_T2.elements_count;
45 td->specifics = asn1_DEF_T2.specifics;
46}
47
vlm39ba4c42004-09-22 16:06:28 +000048void
49T1_free(asn1_TYPE_descriptor_t *td,
50 void *struct_ptr, int contents_only) {
vlmde592d72004-09-14 12:46:58 +000051 T1_inherit_TYPE_descriptor(td);
vlm39ba4c42004-09-22 16:06:28 +000052 td->free_struct(td, struct_ptr, contents_only);
vlmde592d72004-09-14 12:46:58 +000053}
54
55int
56T1_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
57 int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
58 T1_inherit_TYPE_descriptor(td);
59 return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
60}
61
vlm39ba4c42004-09-22 16:06:28 +000062ber_dec_rval_t
63T1_decode_ber(asn1_TYPE_descriptor_t *td,
64 void **structure, void *bufptr, size_t size, int tag_mode) {
vlmde592d72004-09-14 12:46:58 +000065 T1_inherit_TYPE_descriptor(td);
vlm39ba4c42004-09-22 16:06:28 +000066 return td->ber_decoder(td, structure, bufptr, size, tag_mode);
67}
68
69asn_enc_rval_t
70T1_encode_der(asn1_TYPE_descriptor_t *td,
71 void *structure, int tag_mode, ber_tlv_tag_t tag,
72 asn_app_consume_bytes_f *cb, void *app_key) {
73 T1_inherit_TYPE_descriptor(td);
74 return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
75}
76
77asn_enc_rval_t
78T1_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
79 int ilevel, enum xer_encoder_flags_e flags,
80 asn_app_consume_bytes_f *cb, void *app_key) {
81 T1_inherit_TYPE_descriptor(td);
82 return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
vlmde592d72004-09-14 12:46:58 +000083}
84
85
86/*** <<< STAT-DEFS [T1] >>> ***/
87
88static ber_tlv_tag_t asn1_DEF_T1_tags[] = {
89 (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
90 (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
91 (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
92 (ASN_TAG_CLASS_CONTEXT | (6 << 2))
93};
94static ber_tlv_tag_t asn1_DEF_T1_all_tags[] = {
95 (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
96 (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
97 (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
98 (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
99 (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
100 (ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
101};
102asn1_TYPE_descriptor_t asn1_DEF_T1 = {
103 "T1",
vlm39ba4c42004-09-22 16:06:28 +0000104 T1_free,
105 T1_print,
vlmde592d72004-09-14 12:46:58 +0000106 T1_constraint,
107 T1_decode_ber,
108 T1_encode_der,
vlm39ba4c42004-09-22 16:06:28 +0000109 0, /* Not implemented yet */
110 T1_encode_xer,
vlmde592d72004-09-14 12:46:58 +0000111 0, /* Use generic outmost tag fetcher */
112 asn1_DEF_T1_tags,
113 sizeof(asn1_DEF_T1_tags)
114 /sizeof(asn1_DEF_T1_tags[0]), /* 4 */
115 asn1_DEF_T1_all_tags,
116 sizeof(asn1_DEF_T1_all_tags)
117 /sizeof(asn1_DEF_T1_all_tags[0]), /* 6 */
vlmde592d72004-09-14 12:46:58 +0000118 0, 0, /* No members */
119 0 /* No specifics */
120};
121
122
123/*** <<< INCLUDES [T2] >>> ***/
124
125#include <T3.h>
126
127/*** <<< TYPE-DECLS [T2] >>> ***/
128
129
130typedef T3_t T2_t;
131
132/*** <<< FUNC-DECLS [T2] >>> ***/
133
134extern asn1_TYPE_descriptor_t asn1_DEF_T2;
vlm39ba4c42004-09-22 16:06:28 +0000135asn_struct_free_f T2_free;
136asn_struct_print_f T2_print;
vlmde592d72004-09-14 12:46:58 +0000137asn_constr_check_f T2_constraint;
138ber_type_decoder_f T2_decode_ber;
139der_type_encoder_f T2_encode_der;
vlm39ba4c42004-09-22 16:06:28 +0000140xer_type_encoder_f T2_encode_xer;
vlmde592d72004-09-14 12:46:58 +0000141
142/*** <<< CODE [T2] >>> ***/
143
144int
145T2_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
146 asn_app_consume_bytes_f *app_errlog, void *app_key) {
vlmaafc9412004-09-26 13:12:56 +0000147 /* Replace with underlying type checker */
vlmde592d72004-09-14 12:46:58 +0000148 td->check_constraints = asn1_DEF_T3.check_constraints;
vlmaafc9412004-09-26 13:12:56 +0000149 return td->check_constraints(td, sptr, app_errlog, app_key);
vlmde592d72004-09-14 12:46:58 +0000150}
151
152/*
153 * This type is implemented using T3,
vlmcb0b7fc2004-09-23 22:14:58 +0000154 * so here we adjust the DEF accordingly.
vlmde592d72004-09-14 12:46:58 +0000155 */
156static void
157T2_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
vlmde592d72004-09-14 12:46:58 +0000158 td->free_struct = asn1_DEF_T3.free_struct;
159 td->print_struct = asn1_DEF_T3.print_struct;
vlm39ba4c42004-09-22 16:06:28 +0000160 td->ber_decoder = asn1_DEF_T3.ber_decoder;
161 td->der_encoder = asn1_DEF_T3.der_encoder;
162 td->xer_decoder = asn1_DEF_T3.xer_decoder;
163 td->xer_encoder = asn1_DEF_T3.xer_encoder;
vlmde592d72004-09-14 12:46:58 +0000164 td->elements = asn1_DEF_T3.elements;
165 td->elements_count = asn1_DEF_T3.elements_count;
166 td->specifics = asn1_DEF_T3.specifics;
167}
168
vlm39ba4c42004-09-22 16:06:28 +0000169void
170T2_free(asn1_TYPE_descriptor_t *td,
171 void *struct_ptr, int contents_only) {
vlmde592d72004-09-14 12:46:58 +0000172 T2_inherit_TYPE_descriptor(td);
vlm39ba4c42004-09-22 16:06:28 +0000173 td->free_struct(td, struct_ptr, contents_only);
vlmde592d72004-09-14 12:46:58 +0000174}
175
176int
177T2_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
178 int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
179 T2_inherit_TYPE_descriptor(td);
180 return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
181}
182
vlm39ba4c42004-09-22 16:06:28 +0000183ber_dec_rval_t
184T2_decode_ber(asn1_TYPE_descriptor_t *td,
185 void **structure, void *bufptr, size_t size, int tag_mode) {
vlmde592d72004-09-14 12:46:58 +0000186 T2_inherit_TYPE_descriptor(td);
vlm39ba4c42004-09-22 16:06:28 +0000187 return td->ber_decoder(td, structure, bufptr, size, tag_mode);
188}
189
190asn_enc_rval_t
191T2_encode_der(asn1_TYPE_descriptor_t *td,
192 void *structure, int tag_mode, ber_tlv_tag_t tag,
193 asn_app_consume_bytes_f *cb, void *app_key) {
194 T2_inherit_TYPE_descriptor(td);
195 return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
196}
197
198asn_enc_rval_t
199T2_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
200 int ilevel, enum xer_encoder_flags_e flags,
201 asn_app_consume_bytes_f *cb, void *app_key) {
202 T2_inherit_TYPE_descriptor(td);
203 return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
vlmde592d72004-09-14 12:46:58 +0000204}
205
206
207/*** <<< STAT-DEFS [T2] >>> ***/
208
209static ber_tlv_tag_t asn1_DEF_T2_tags[] = {
210 (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
211 (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
212 (ASN_TAG_CLASS_CONTEXT | (6 << 2))
213};
214static ber_tlv_tag_t asn1_DEF_T2_all_tags[] = {
215 (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
216 (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
217 (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
218 (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
219 (ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
220};
221asn1_TYPE_descriptor_t asn1_DEF_T2 = {
222 "T2",
vlm39ba4c42004-09-22 16:06:28 +0000223 T2_free,
224 T2_print,
vlmde592d72004-09-14 12:46:58 +0000225 T2_constraint,
226 T2_decode_ber,
227 T2_encode_der,
vlm39ba4c42004-09-22 16:06:28 +0000228 0, /* Not implemented yet */
229 T2_encode_xer,
vlmde592d72004-09-14 12:46:58 +0000230 0, /* Use generic outmost tag fetcher */
231 asn1_DEF_T2_tags,
232 sizeof(asn1_DEF_T2_tags)
233 /sizeof(asn1_DEF_T2_tags[0]), /* 3 */
234 asn1_DEF_T2_all_tags,
235 sizeof(asn1_DEF_T2_all_tags)
236 /sizeof(asn1_DEF_T2_all_tags[0]), /* 5 */
vlmde592d72004-09-14 12:46:58 +0000237 0, 0, /* No members */
238 0 /* No specifics */
239};
240
241
242/*** <<< INCLUDES [T3] >>> ***/
243
244#include <T4.h>
245
246/*** <<< TYPE-DECLS [T3] >>> ***/
247
248
249typedef T4_t T3_t;
250
251/*** <<< FUNC-DECLS [T3] >>> ***/
252
253extern asn1_TYPE_descriptor_t asn1_DEF_T3;
vlm39ba4c42004-09-22 16:06:28 +0000254asn_struct_free_f T3_free;
255asn_struct_print_f T3_print;
vlmde592d72004-09-14 12:46:58 +0000256asn_constr_check_f T3_constraint;
257ber_type_decoder_f T3_decode_ber;
258der_type_encoder_f T3_encode_der;
vlm39ba4c42004-09-22 16:06:28 +0000259xer_type_encoder_f T3_encode_xer;
vlmde592d72004-09-14 12:46:58 +0000260
261/*** <<< CODE [T3] >>> ***/
262
263int
264T3_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
265 asn_app_consume_bytes_f *app_errlog, void *app_key) {
vlmaafc9412004-09-26 13:12:56 +0000266 /* Replace with underlying type checker */
vlmde592d72004-09-14 12:46:58 +0000267 td->check_constraints = asn1_DEF_T4.check_constraints;
vlmaafc9412004-09-26 13:12:56 +0000268 return td->check_constraints(td, sptr, app_errlog, app_key);
vlmde592d72004-09-14 12:46:58 +0000269}
270
271/*
272 * This type is implemented using T4,
vlmcb0b7fc2004-09-23 22:14:58 +0000273 * so here we adjust the DEF accordingly.
vlmde592d72004-09-14 12:46:58 +0000274 */
275static void
276T3_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
vlmde592d72004-09-14 12:46:58 +0000277 td->free_struct = asn1_DEF_T4.free_struct;
278 td->print_struct = asn1_DEF_T4.print_struct;
vlm39ba4c42004-09-22 16:06:28 +0000279 td->ber_decoder = asn1_DEF_T4.ber_decoder;
280 td->der_encoder = asn1_DEF_T4.der_encoder;
281 td->xer_decoder = asn1_DEF_T4.xer_decoder;
282 td->xer_encoder = asn1_DEF_T4.xer_encoder;
vlmde592d72004-09-14 12:46:58 +0000283 td->elements = asn1_DEF_T4.elements;
284 td->elements_count = asn1_DEF_T4.elements_count;
285 td->specifics = asn1_DEF_T4.specifics;
286}
287
vlm39ba4c42004-09-22 16:06:28 +0000288void
289T3_free(asn1_TYPE_descriptor_t *td,
290 void *struct_ptr, int contents_only) {
vlmde592d72004-09-14 12:46:58 +0000291 T3_inherit_TYPE_descriptor(td);
vlm39ba4c42004-09-22 16:06:28 +0000292 td->free_struct(td, struct_ptr, contents_only);
vlmde592d72004-09-14 12:46:58 +0000293}
294
295int
296T3_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
297 int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
298 T3_inherit_TYPE_descriptor(td);
299 return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
300}
301
vlm39ba4c42004-09-22 16:06:28 +0000302ber_dec_rval_t
303T3_decode_ber(asn1_TYPE_descriptor_t *td,
304 void **structure, void *bufptr, size_t size, int tag_mode) {
vlmde592d72004-09-14 12:46:58 +0000305 T3_inherit_TYPE_descriptor(td);
vlm39ba4c42004-09-22 16:06:28 +0000306 return td->ber_decoder(td, structure, bufptr, size, tag_mode);
307}
308
309asn_enc_rval_t
310T3_encode_der(asn1_TYPE_descriptor_t *td,
311 void *structure, int tag_mode, ber_tlv_tag_t tag,
312 asn_app_consume_bytes_f *cb, void *app_key) {
313 T3_inherit_TYPE_descriptor(td);
314 return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
315}
316
317asn_enc_rval_t
318T3_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
319 int ilevel, enum xer_encoder_flags_e flags,
320 asn_app_consume_bytes_f *cb, void *app_key) {
321 T3_inherit_TYPE_descriptor(td);
322 return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
vlmde592d72004-09-14 12:46:58 +0000323}
324
325
326/*** <<< STAT-DEFS [T3] >>> ***/
327
328static ber_tlv_tag_t asn1_DEF_T3_tags[] = {
329 (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
330 (ASN_TAG_CLASS_CONTEXT | (6 << 2))
331};
332static ber_tlv_tag_t asn1_DEF_T3_all_tags[] = {
333 (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
334 (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
335 (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
336 (ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
337};
338asn1_TYPE_descriptor_t asn1_DEF_T3 = {
339 "T3",
vlm39ba4c42004-09-22 16:06:28 +0000340 T3_free,
341 T3_print,
vlmde592d72004-09-14 12:46:58 +0000342 T3_constraint,
343 T3_decode_ber,
344 T3_encode_der,
vlm39ba4c42004-09-22 16:06:28 +0000345 0, /* Not implemented yet */
346 T3_encode_xer,
vlmde592d72004-09-14 12:46:58 +0000347 0, /* Use generic outmost tag fetcher */
348 asn1_DEF_T3_tags,
349 sizeof(asn1_DEF_T3_tags)
350 /sizeof(asn1_DEF_T3_tags[0]), /* 2 */
351 asn1_DEF_T3_all_tags,
352 sizeof(asn1_DEF_T3_all_tags)
353 /sizeof(asn1_DEF_T3_all_tags[0]), /* 4 */
vlmde592d72004-09-14 12:46:58 +0000354 0, 0, /* No members */
355 0 /* No specifics */
356};
357
358
359/*** <<< INCLUDES [T4] >>> ***/
360
361#include <T5.h>
362
363/*** <<< TYPE-DECLS [T4] >>> ***/
364
365
366typedef T5_t T4_t;
367
368/*** <<< FUNC-DECLS [T4] >>> ***/
369
370extern asn1_TYPE_descriptor_t asn1_DEF_T4;
vlm39ba4c42004-09-22 16:06:28 +0000371asn_struct_free_f T4_free;
372asn_struct_print_f T4_print;
vlmde592d72004-09-14 12:46:58 +0000373asn_constr_check_f T4_constraint;
374ber_type_decoder_f T4_decode_ber;
375der_type_encoder_f T4_encode_der;
vlm39ba4c42004-09-22 16:06:28 +0000376xer_type_encoder_f T4_encode_xer;
vlmde592d72004-09-14 12:46:58 +0000377
378/*** <<< CODE [T4] >>> ***/
379
380int
381T4_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
382 asn_app_consume_bytes_f *app_errlog, void *app_key) {
vlmaafc9412004-09-26 13:12:56 +0000383 /* Replace with underlying type checker */
vlmde592d72004-09-14 12:46:58 +0000384 td->check_constraints = asn1_DEF_T5.check_constraints;
vlmaafc9412004-09-26 13:12:56 +0000385 return td->check_constraints(td, sptr, app_errlog, app_key);
vlmde592d72004-09-14 12:46:58 +0000386}
387
388/*
389 * This type is implemented using T5,
vlmcb0b7fc2004-09-23 22:14:58 +0000390 * so here we adjust the DEF accordingly.
vlmde592d72004-09-14 12:46:58 +0000391 */
392static void
393T4_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
vlmde592d72004-09-14 12:46:58 +0000394 td->free_struct = asn1_DEF_T5.free_struct;
395 td->print_struct = asn1_DEF_T5.print_struct;
vlm39ba4c42004-09-22 16:06:28 +0000396 td->ber_decoder = asn1_DEF_T5.ber_decoder;
397 td->der_encoder = asn1_DEF_T5.der_encoder;
398 td->xer_decoder = asn1_DEF_T5.xer_decoder;
399 td->xer_encoder = asn1_DEF_T5.xer_encoder;
vlmde592d72004-09-14 12:46:58 +0000400 td->elements = asn1_DEF_T5.elements;
401 td->elements_count = asn1_DEF_T5.elements_count;
402 td->specifics = asn1_DEF_T5.specifics;
403}
404
vlm39ba4c42004-09-22 16:06:28 +0000405void
406T4_free(asn1_TYPE_descriptor_t *td,
407 void *struct_ptr, int contents_only) {
vlmde592d72004-09-14 12:46:58 +0000408 T4_inherit_TYPE_descriptor(td);
vlm39ba4c42004-09-22 16:06:28 +0000409 td->free_struct(td, struct_ptr, contents_only);
vlmde592d72004-09-14 12:46:58 +0000410}
411
412int
413T4_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
414 int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
415 T4_inherit_TYPE_descriptor(td);
416 return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
417}
418
vlm39ba4c42004-09-22 16:06:28 +0000419ber_dec_rval_t
420T4_decode_ber(asn1_TYPE_descriptor_t *td,
421 void **structure, void *bufptr, size_t size, int tag_mode) {
vlmde592d72004-09-14 12:46:58 +0000422 T4_inherit_TYPE_descriptor(td);
vlm39ba4c42004-09-22 16:06:28 +0000423 return td->ber_decoder(td, structure, bufptr, size, tag_mode);
424}
425
426asn_enc_rval_t
427T4_encode_der(asn1_TYPE_descriptor_t *td,
428 void *structure, int tag_mode, ber_tlv_tag_t tag,
429 asn_app_consume_bytes_f *cb, void *app_key) {
430 T4_inherit_TYPE_descriptor(td);
431 return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
432}
433
434asn_enc_rval_t
435T4_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
436 int ilevel, enum xer_encoder_flags_e flags,
437 asn_app_consume_bytes_f *cb, void *app_key) {
438 T4_inherit_TYPE_descriptor(td);
439 return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
vlmde592d72004-09-14 12:46:58 +0000440}
441
442
443/*** <<< STAT-DEFS [T4] >>> ***/
444
445static ber_tlv_tag_t asn1_DEF_T4_tags[] = {
446 (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
447 (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
448 (ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
449};
450asn1_TYPE_descriptor_t asn1_DEF_T4 = {
451 "T4",
vlm39ba4c42004-09-22 16:06:28 +0000452 T4_free,
453 T4_print,
vlmde592d72004-09-14 12:46:58 +0000454 T4_constraint,
455 T4_decode_ber,
456 T4_encode_der,
vlm39ba4c42004-09-22 16:06:28 +0000457 0, /* Not implemented yet */
458 T4_encode_xer,
vlmde592d72004-09-14 12:46:58 +0000459 0, /* Use generic outmost tag fetcher */
460 asn1_DEF_T4_tags,
461 sizeof(asn1_DEF_T4_tags)
462 /sizeof(asn1_DEF_T4_tags[0]) - 1, /* 2 */
463 asn1_DEF_T4_tags, /* Same as above */
464 sizeof(asn1_DEF_T4_tags)
465 /sizeof(asn1_DEF_T4_tags[0]), /* 3 */
vlmde592d72004-09-14 12:46:58 +0000466 0, 0, /* No members */
467 0 /* No specifics */
468};
469
470
471/*** <<< INCLUDES [T5] >>> ***/
472
473#include <T6.h>
474
475/*** <<< TYPE-DECLS [T5] >>> ***/
476
477
478typedef T6_t T5_t;
479
480/*** <<< FUNC-DECLS [T5] >>> ***/
481
482extern asn1_TYPE_descriptor_t asn1_DEF_T5;
vlm39ba4c42004-09-22 16:06:28 +0000483asn_struct_free_f T5_free;
484asn_struct_print_f T5_print;
vlmde592d72004-09-14 12:46:58 +0000485asn_constr_check_f T5_constraint;
486ber_type_decoder_f T5_decode_ber;
487der_type_encoder_f T5_encode_der;
vlm39ba4c42004-09-22 16:06:28 +0000488xer_type_encoder_f T5_encode_xer;
vlmde592d72004-09-14 12:46:58 +0000489
490/*** <<< CODE [T5] >>> ***/
491
492int
493T5_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
494 asn_app_consume_bytes_f *app_errlog, void *app_key) {
vlmaafc9412004-09-26 13:12:56 +0000495 /* Replace with underlying type checker */
vlmde592d72004-09-14 12:46:58 +0000496 td->check_constraints = asn1_DEF_T6.check_constraints;
vlmaafc9412004-09-26 13:12:56 +0000497 return td->check_constraints(td, sptr, app_errlog, app_key);
vlmde592d72004-09-14 12:46:58 +0000498}
499
500/*
501 * This type is implemented using T6,
vlmcb0b7fc2004-09-23 22:14:58 +0000502 * so here we adjust the DEF accordingly.
vlmde592d72004-09-14 12:46:58 +0000503 */
504static void
505T5_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
vlmde592d72004-09-14 12:46:58 +0000506 td->free_struct = asn1_DEF_T6.free_struct;
507 td->print_struct = asn1_DEF_T6.print_struct;
vlm39ba4c42004-09-22 16:06:28 +0000508 td->ber_decoder = asn1_DEF_T6.ber_decoder;
509 td->der_encoder = asn1_DEF_T6.der_encoder;
510 td->xer_decoder = asn1_DEF_T6.xer_decoder;
511 td->xer_encoder = asn1_DEF_T6.xer_encoder;
vlmde592d72004-09-14 12:46:58 +0000512 td->elements = asn1_DEF_T6.elements;
513 td->elements_count = asn1_DEF_T6.elements_count;
514 td->specifics = asn1_DEF_T6.specifics;
515}
516
vlm39ba4c42004-09-22 16:06:28 +0000517void
518T5_free(asn1_TYPE_descriptor_t *td,
519 void *struct_ptr, int contents_only) {
vlmde592d72004-09-14 12:46:58 +0000520 T5_inherit_TYPE_descriptor(td);
vlm39ba4c42004-09-22 16:06:28 +0000521 td->free_struct(td, struct_ptr, contents_only);
vlmde592d72004-09-14 12:46:58 +0000522}
523
524int
525T5_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
526 int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
527 T5_inherit_TYPE_descriptor(td);
528 return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
529}
530
vlm39ba4c42004-09-22 16:06:28 +0000531ber_dec_rval_t
532T5_decode_ber(asn1_TYPE_descriptor_t *td,
533 void **structure, void *bufptr, size_t size, int tag_mode) {
vlmde592d72004-09-14 12:46:58 +0000534 T5_inherit_TYPE_descriptor(td);
vlm39ba4c42004-09-22 16:06:28 +0000535 return td->ber_decoder(td, structure, bufptr, size, tag_mode);
536}
537
538asn_enc_rval_t
539T5_encode_der(asn1_TYPE_descriptor_t *td,
540 void *structure, int tag_mode, ber_tlv_tag_t tag,
541 asn_app_consume_bytes_f *cb, void *app_key) {
542 T5_inherit_TYPE_descriptor(td);
543 return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
544}
545
546asn_enc_rval_t
547T5_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
548 int ilevel, enum xer_encoder_flags_e flags,
549 asn_app_consume_bytes_f *cb, void *app_key) {
550 T5_inherit_TYPE_descriptor(td);
551 return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
vlmde592d72004-09-14 12:46:58 +0000552}
553
554
555/*** <<< STAT-DEFS [T5] >>> ***/
556
557static ber_tlv_tag_t asn1_DEF_T5_tags[] = {
558 (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
559 (ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
560};
561asn1_TYPE_descriptor_t asn1_DEF_T5 = {
562 "T5",
vlm39ba4c42004-09-22 16:06:28 +0000563 T5_free,
564 T5_print,
vlmde592d72004-09-14 12:46:58 +0000565 T5_constraint,
566 T5_decode_ber,
567 T5_encode_der,
vlm39ba4c42004-09-22 16:06:28 +0000568 0, /* Not implemented yet */
569 T5_encode_xer,
vlmde592d72004-09-14 12:46:58 +0000570 0, /* Use generic outmost tag fetcher */
571 asn1_DEF_T5_tags,
572 sizeof(asn1_DEF_T5_tags)
573 /sizeof(asn1_DEF_T5_tags[0]) - 1, /* 1 */
574 asn1_DEF_T5_tags, /* Same as above */
575 sizeof(asn1_DEF_T5_tags)
576 /sizeof(asn1_DEF_T5_tags[0]), /* 2 */
vlmde592d72004-09-14 12:46:58 +0000577 0, 0, /* No members */
578 0 /* No specifics */
579};
580
581
582/*** <<< INCLUDES [T6] >>> ***/
583
584#include <NativeReal.h>
585
586/*** <<< TYPE-DECLS [T6] >>> ***/
587
588
589typedef double T6_t;
590
591/*** <<< FUNC-DECLS [T6] >>> ***/
592
vlmaafc9412004-09-26 13:12:56 +0000593/* This type is equivalent to NativeReal */
594#define asn1_DEF_T6 asn1_DEF_NativeReal
vlmde592d72004-09-14 12:46:58 +0000595
596/*** <<< CODE [T6] >>> ***/
597
vlmaafc9412004-09-26 13:12:56 +0000598/* This type is equivalent to NativeReal */
vlmde592d72004-09-14 12:46:58 +0000599
600
601/*** <<< INCLUDES [T] >>> ***/
602
603#include <Ts.h>
604
605/*** <<< TYPE-DECLS [T] >>> ***/
606
607
608typedef Ts_t T_t;
609
610/*** <<< FUNC-DECLS [T] >>> ***/
611
612extern asn1_TYPE_descriptor_t asn1_DEF_T;
vlm39ba4c42004-09-22 16:06:28 +0000613asn_struct_free_f T_free;
614asn_struct_print_f T_print;
vlmde592d72004-09-14 12:46:58 +0000615asn_constr_check_f T_constraint;
616ber_type_decoder_f T_decode_ber;
617der_type_encoder_f T_encode_der;
vlm39ba4c42004-09-22 16:06:28 +0000618xer_type_encoder_f T_encode_xer;
vlmde592d72004-09-14 12:46:58 +0000619
620/*** <<< CODE [T] >>> ***/
621
622int
623T_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
624 asn_app_consume_bytes_f *app_errlog, void *app_key) {
vlmaafc9412004-09-26 13:12:56 +0000625 /* Replace with underlying type checker */
vlmde592d72004-09-14 12:46:58 +0000626 td->check_constraints = asn1_DEF_Ts.check_constraints;
vlmaafc9412004-09-26 13:12:56 +0000627 return td->check_constraints(td, sptr, app_errlog, app_key);
vlmde592d72004-09-14 12:46:58 +0000628}
629
630/*
631 * This type is implemented using Ts,
vlmcb0b7fc2004-09-23 22:14:58 +0000632 * so here we adjust the DEF accordingly.
vlmde592d72004-09-14 12:46:58 +0000633 */
634static void
635T_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
vlmde592d72004-09-14 12:46:58 +0000636 td->free_struct = asn1_DEF_Ts.free_struct;
637 td->print_struct = asn1_DEF_Ts.print_struct;
vlm39ba4c42004-09-22 16:06:28 +0000638 td->ber_decoder = asn1_DEF_Ts.ber_decoder;
639 td->der_encoder = asn1_DEF_Ts.der_encoder;
640 td->xer_decoder = asn1_DEF_Ts.xer_decoder;
641 td->xer_encoder = asn1_DEF_Ts.xer_encoder;
vlmde592d72004-09-14 12:46:58 +0000642 td->elements = asn1_DEF_Ts.elements;
643 td->elements_count = asn1_DEF_Ts.elements_count;
644 td->specifics = asn1_DEF_Ts.specifics;
645}
646
vlm39ba4c42004-09-22 16:06:28 +0000647void
648T_free(asn1_TYPE_descriptor_t *td,
649 void *struct_ptr, int contents_only) {
vlmde592d72004-09-14 12:46:58 +0000650 T_inherit_TYPE_descriptor(td);
vlm39ba4c42004-09-22 16:06:28 +0000651 td->free_struct(td, struct_ptr, contents_only);
vlmde592d72004-09-14 12:46:58 +0000652}
653
654int
655T_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
656 int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
657 T_inherit_TYPE_descriptor(td);
658 return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
659}
660
vlm39ba4c42004-09-22 16:06:28 +0000661ber_dec_rval_t
662T_decode_ber(asn1_TYPE_descriptor_t *td,
663 void **structure, void *bufptr, size_t size, int tag_mode) {
vlmde592d72004-09-14 12:46:58 +0000664 T_inherit_TYPE_descriptor(td);
vlm39ba4c42004-09-22 16:06:28 +0000665 return td->ber_decoder(td, structure, bufptr, size, tag_mode);
666}
667
668asn_enc_rval_t
669T_encode_der(asn1_TYPE_descriptor_t *td,
670 void *structure, int tag_mode, ber_tlv_tag_t tag,
671 asn_app_consume_bytes_f *cb, void *app_key) {
672 T_inherit_TYPE_descriptor(td);
673 return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
674}
675
676asn_enc_rval_t
677T_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
678 int ilevel, enum xer_encoder_flags_e flags,
679 asn_app_consume_bytes_f *cb, void *app_key) {
680 T_inherit_TYPE_descriptor(td);
681 return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
vlmde592d72004-09-14 12:46:58 +0000682}
683
684
685/*** <<< STAT-DEFS [T] >>> ***/
686
687static ber_tlv_tag_t asn1_DEF_T_tags[] = {
688 (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
689 (ASN_TAG_CLASS_CONTEXT | (123 << 2)),
690 (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
691};
692asn1_TYPE_descriptor_t asn1_DEF_T = {
693 "T",
vlm39ba4c42004-09-22 16:06:28 +0000694 T_free,
695 T_print,
vlmde592d72004-09-14 12:46:58 +0000696 T_constraint,
697 T_decode_ber,
698 T_encode_der,
vlm39ba4c42004-09-22 16:06:28 +0000699 0, /* Not implemented yet */
700 T_encode_xer,
vlmde592d72004-09-14 12:46:58 +0000701 0, /* Use generic outmost tag fetcher */
702 asn1_DEF_T_tags,
703 sizeof(asn1_DEF_T_tags)
704 /sizeof(asn1_DEF_T_tags[0]) - 2, /* 1 */
705 asn1_DEF_T_tags, /* Same as above */
706 sizeof(asn1_DEF_T_tags)
707 /sizeof(asn1_DEF_T_tags[0]), /* 3 */
vlmde592d72004-09-14 12:46:58 +0000708 0, 0, /* Defined elsewhere */
709 0 /* No specifics */
710};
711
712
713/*** <<< INCLUDES [Ts] >>> ***/
714
715#include <T2.h>
716#include <T3.h>
717#include <constr_SEQUENCE.h>
718
719/*** <<< DEPS [Ts] >>> ***/
720
721extern asn1_TYPE_descriptor_t asn1_DEF_Ts;
722
723/*** <<< TYPE-DECLS [Ts] >>> ***/
724
725
726typedef struct Ts {
727 T2_t m1;
728 T3_t *m2 /* OPTIONAL */;
729 T3_t m3;
730
731 /* Context for parsing across buffer boundaries */
732 ber_dec_ctx_t _ber_dec_ctx;
733} Ts_t;
734
735/*** <<< STAT-DEFS [Ts] >>> ***/
736
737static asn1_TYPE_member_t asn1_MBR_Ts[] = {
738 { ATF_NOFLAGS, 0, offsetof(struct Ts, m1),
739 .tag = (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
740 .tag_mode = -1, /* IMPLICIT tag at current level */
741 .type = (void *)&asn1_DEF_T2,
742 .memb_constraints = 0, /* Defer to actual type */
743 .name = "m1"
744 },
745 { ATF_POINTER, 1, offsetof(struct Ts, m2),
746 .tag = (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
747 .tag_mode = +1, /* EXPLICIT tag at current level */
748 .type = (void *)&asn1_DEF_T3,
749 .memb_constraints = 0, /* Defer to actual type */
750 .name = "m2"
751 },
752 { ATF_NOFLAGS, 0, offsetof(struct Ts, m3),
753 .tag = (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
754 .tag_mode = -1, /* IMPLICIT tag at current level */
755 .type = (void *)&asn1_DEF_T3,
756 .memb_constraints = 0, /* Defer to actual type */
757 .name = "m3"
758 },
759};
760static ber_tlv_tag_t asn1_DEF_Ts_tags[] = {
761 (ASN_TAG_CLASS_CONTEXT | (123 << 2)),
762 (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
763};
764static asn1_TYPE_tag2member_t asn1_DEF_Ts_tag2el[] = {
765 { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* m1 at 24 */
766 { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* m2 at 25 */
767 { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* m3 at 27 */
768};
769static asn1_SEQUENCE_specifics_t asn1_DEF_Ts_specs = {
770 sizeof(struct Ts),
771 offsetof(struct Ts, _ber_dec_ctx),
772 asn1_DEF_Ts_tag2el,
773 3, /* Count of tags in the map */
774 -1, /* Start extensions */
775 -1 /* Stop extensions */
776};
777asn1_TYPE_descriptor_t asn1_DEF_Ts = {
778 "Ts",
vlm39ba4c42004-09-22 16:06:28 +0000779 SEQUENCE_free,
780 SEQUENCE_print,
vlmde592d72004-09-14 12:46:58 +0000781 SEQUENCE_constraint,
782 SEQUENCE_decode_ber,
783 SEQUENCE_encode_der,
vlm39ba4c42004-09-22 16:06:28 +0000784 0, /* Not implemented yet */
785 SEQUENCE_encode_xer,
vlmde592d72004-09-14 12:46:58 +0000786 0, /* Use generic outmost tag fetcher */
787 asn1_DEF_Ts_tags,
788 sizeof(asn1_DEF_Ts_tags)
789 /sizeof(asn1_DEF_Ts_tags[0]) - 1, /* 1 */
790 asn1_DEF_Ts_tags, /* Same as above */
791 sizeof(asn1_DEF_Ts_tags)
792 /sizeof(asn1_DEF_Ts_tags[0]), /* 2 */
vlmde592d72004-09-14 12:46:58 +0000793 asn1_MBR_Ts,
794 3, /* Elements count */
795 &asn1_DEF_Ts_specs /* Additional specs */
796};
797