blob: 111c2761071ca590d5a52900435037df6a2ee62c [file] [log] [blame]
Lev Walkin906654e2004-09-10 15:49:15 +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;
Lev Walkina9cc46e2004-09-22 16:06:28 +000014asn_struct_free_f T1_free;
15asn_struct_print_f T1_print;
Lev Walkin906654e2004-09-10 15:49:15 +000016asn_constr_check_f T1_constraint;
17ber_type_decoder_f T1_decode_ber;
18der_type_encoder_f T1_encode_der;
Lev Walkina9cc46e2004-09-22 16:06:28 +000019xer_type_encoder_f T1_encode_xer;
Lev Walkin906654e2004-09-10 15:49:15 +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) {
26
27 /* Make the underlying type checker permanent */
28 td->check_constraints = asn1_DEF_T2.check_constraints;
29 return td->check_constraints
30 (td, sptr, app_errlog, app_key);
31}
32
33/*
34 * This type is implemented using T2,
Lev Walkinc3808c12004-09-23 22:14:58 +000035 * so here we adjust the DEF accordingly.
Lev Walkin906654e2004-09-10 15:49:15 +000036 */
37static void
38T1_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
Lev Walkin906654e2004-09-10 15:49:15 +000039 td->free_struct = asn1_DEF_T2.free_struct;
40 td->print_struct = asn1_DEF_T2.print_struct;
Lev Walkina9cc46e2004-09-22 16:06:28 +000041 td->ber_decoder = asn1_DEF_T2.ber_decoder;
42 td->der_encoder = asn1_DEF_T2.der_encoder;
43 td->xer_decoder = asn1_DEF_T2.xer_decoder;
44 td->xer_encoder = asn1_DEF_T2.xer_encoder;
Lev Walkin906654e2004-09-10 15:49:15 +000045 td->last_tag_form = asn1_DEF_T2.last_tag_form;
46 td->elements = asn1_DEF_T2.elements;
47 td->elements_count = asn1_DEF_T2.elements_count;
48 td->specifics = asn1_DEF_T2.specifics;
49}
50
Lev Walkina9cc46e2004-09-22 16:06:28 +000051void
52T1_free(asn1_TYPE_descriptor_t *td,
53 void *struct_ptr, int contents_only) {
Lev Walkin906654e2004-09-10 15:49:15 +000054 T1_inherit_TYPE_descriptor(td);
Lev Walkina9cc46e2004-09-22 16:06:28 +000055 td->free_struct(td, struct_ptr, contents_only);
Lev Walkin906654e2004-09-10 15:49:15 +000056}
57
58int
59T1_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
60 int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
61 T1_inherit_TYPE_descriptor(td);
62 return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
63}
64
Lev Walkina9cc46e2004-09-22 16:06:28 +000065ber_dec_rval_t
66T1_decode_ber(asn1_TYPE_descriptor_t *td,
67 void **structure, void *bufptr, size_t size, int tag_mode) {
Lev Walkin906654e2004-09-10 15:49:15 +000068 T1_inherit_TYPE_descriptor(td);
Lev Walkina9cc46e2004-09-22 16:06:28 +000069 return td->ber_decoder(td, structure, bufptr, size, tag_mode);
70}
71
72asn_enc_rval_t
73T1_encode_der(asn1_TYPE_descriptor_t *td,
74 void *structure, int tag_mode, ber_tlv_tag_t tag,
75 asn_app_consume_bytes_f *cb, void *app_key) {
76 T1_inherit_TYPE_descriptor(td);
77 return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
78}
79
80asn_enc_rval_t
81T1_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
82 int ilevel, enum xer_encoder_flags_e flags,
83 asn_app_consume_bytes_f *cb, void *app_key) {
84 T1_inherit_TYPE_descriptor(td);
85 return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
Lev Walkin906654e2004-09-10 15:49:15 +000086}
87
88
89/*** <<< STAT-DEFS [T1] >>> ***/
90
91static ber_tlv_tag_t asn1_DEF_T1_tags[] = {
92 (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
93 (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
94 (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
95 (ASN_TAG_CLASS_CONTEXT | (6 << 2))
96};
Lev Walkin188ed2c2004-09-13 08:31:01 +000097static ber_tlv_tag_t asn1_DEF_T1_all_tags[] = {
98 (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
99 (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
100 (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
101 (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
102 (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
Lev Walkin2888f272004-09-14 12:46:58 +0000103 (ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
Lev Walkin188ed2c2004-09-13 08:31:01 +0000104};
Lev Walkin906654e2004-09-10 15:49:15 +0000105asn1_TYPE_descriptor_t asn1_DEF_T1 = {
106 "T1",
Lev Walkina9cc46e2004-09-22 16:06:28 +0000107 T1_free,
108 T1_print,
Lev Walkin906654e2004-09-10 15:49:15 +0000109 T1_constraint,
110 T1_decode_ber,
111 T1_encode_der,
Lev Walkina9cc46e2004-09-22 16:06:28 +0000112 0, /* Not implemented yet */
113 T1_encode_xer,
Lev Walkin906654e2004-09-10 15:49:15 +0000114 0, /* Use generic outmost tag fetcher */
115 asn1_DEF_T1_tags,
116 sizeof(asn1_DEF_T1_tags)
117 /sizeof(asn1_DEF_T1_tags[0]), /* 4 */
Lev Walkin188ed2c2004-09-13 08:31:01 +0000118 asn1_DEF_T1_all_tags,
119 sizeof(asn1_DEF_T1_all_tags)
120 /sizeof(asn1_DEF_T1_all_tags[0]), /* 6 */
Lev Walkin906654e2004-09-10 15:49:15 +0000121 -0, /* Unknown yet */
122 0, 0, /* No members */
123 0 /* No specifics */
124};
125
126
127/*** <<< INCLUDES [T2] >>> ***/
128
129#include <T3.h>
130
131/*** <<< TYPE-DECLS [T2] >>> ***/
132
133
134typedef T3_t T2_t;
135
136/*** <<< FUNC-DECLS [T2] >>> ***/
137
138extern asn1_TYPE_descriptor_t asn1_DEF_T2;
Lev Walkina9cc46e2004-09-22 16:06:28 +0000139asn_struct_free_f T2_free;
140asn_struct_print_f T2_print;
Lev Walkin906654e2004-09-10 15:49:15 +0000141asn_constr_check_f T2_constraint;
142ber_type_decoder_f T2_decode_ber;
143der_type_encoder_f T2_encode_der;
Lev Walkina9cc46e2004-09-22 16:06:28 +0000144xer_type_encoder_f T2_encode_xer;
Lev Walkin906654e2004-09-10 15:49:15 +0000145
146/*** <<< CODE [T2] >>> ***/
147
148int
149T2_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
150 asn_app_consume_bytes_f *app_errlog, void *app_key) {
151
152 /* Make the underlying type checker permanent */
153 td->check_constraints = asn1_DEF_T3.check_constraints;
154 return td->check_constraints
155 (td, sptr, app_errlog, app_key);
156}
157
158/*
159 * This type is implemented using T3,
Lev Walkinc3808c12004-09-23 22:14:58 +0000160 * so here we adjust the DEF accordingly.
Lev Walkin906654e2004-09-10 15:49:15 +0000161 */
162static void
163T2_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
Lev Walkin906654e2004-09-10 15:49:15 +0000164 td->free_struct = asn1_DEF_T3.free_struct;
165 td->print_struct = asn1_DEF_T3.print_struct;
Lev Walkina9cc46e2004-09-22 16:06:28 +0000166 td->ber_decoder = asn1_DEF_T3.ber_decoder;
167 td->der_encoder = asn1_DEF_T3.der_encoder;
168 td->xer_decoder = asn1_DEF_T3.xer_decoder;
169 td->xer_encoder = asn1_DEF_T3.xer_encoder;
Lev Walkin906654e2004-09-10 15:49:15 +0000170 td->last_tag_form = asn1_DEF_T3.last_tag_form;
171 td->elements = asn1_DEF_T3.elements;
172 td->elements_count = asn1_DEF_T3.elements_count;
173 td->specifics = asn1_DEF_T3.specifics;
174}
175
Lev Walkina9cc46e2004-09-22 16:06:28 +0000176void
177T2_free(asn1_TYPE_descriptor_t *td,
178 void *struct_ptr, int contents_only) {
Lev Walkin906654e2004-09-10 15:49:15 +0000179 T2_inherit_TYPE_descriptor(td);
Lev Walkina9cc46e2004-09-22 16:06:28 +0000180 td->free_struct(td, struct_ptr, contents_only);
Lev Walkin906654e2004-09-10 15:49:15 +0000181}
182
183int
184T2_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
185 int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
186 T2_inherit_TYPE_descriptor(td);
187 return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
188}
189
Lev Walkina9cc46e2004-09-22 16:06:28 +0000190ber_dec_rval_t
191T2_decode_ber(asn1_TYPE_descriptor_t *td,
192 void **structure, void *bufptr, size_t size, int tag_mode) {
Lev Walkin906654e2004-09-10 15:49:15 +0000193 T2_inherit_TYPE_descriptor(td);
Lev Walkina9cc46e2004-09-22 16:06:28 +0000194 return td->ber_decoder(td, structure, bufptr, size, tag_mode);
195}
196
197asn_enc_rval_t
198T2_encode_der(asn1_TYPE_descriptor_t *td,
199 void *structure, int tag_mode, ber_tlv_tag_t tag,
200 asn_app_consume_bytes_f *cb, void *app_key) {
201 T2_inherit_TYPE_descriptor(td);
202 return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
203}
204
205asn_enc_rval_t
206T2_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
207 int ilevel, enum xer_encoder_flags_e flags,
208 asn_app_consume_bytes_f *cb, void *app_key) {
209 T2_inherit_TYPE_descriptor(td);
210 return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
Lev Walkin906654e2004-09-10 15:49:15 +0000211}
212
213
214/*** <<< STAT-DEFS [T2] >>> ***/
215
216static ber_tlv_tag_t asn1_DEF_T2_tags[] = {
217 (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
218 (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
219 (ASN_TAG_CLASS_CONTEXT | (6 << 2))
220};
Lev Walkin188ed2c2004-09-13 08:31:01 +0000221static ber_tlv_tag_t asn1_DEF_T2_all_tags[] = {
222 (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
223 (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
224 (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
225 (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
Lev Walkin2888f272004-09-14 12:46:58 +0000226 (ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
Lev Walkin188ed2c2004-09-13 08:31:01 +0000227};
Lev Walkin906654e2004-09-10 15:49:15 +0000228asn1_TYPE_descriptor_t asn1_DEF_T2 = {
229 "T2",
Lev Walkina9cc46e2004-09-22 16:06:28 +0000230 T2_free,
231 T2_print,
Lev Walkin906654e2004-09-10 15:49:15 +0000232 T2_constraint,
233 T2_decode_ber,
234 T2_encode_der,
Lev Walkina9cc46e2004-09-22 16:06:28 +0000235 0, /* Not implemented yet */
236 T2_encode_xer,
Lev Walkin906654e2004-09-10 15:49:15 +0000237 0, /* Use generic outmost tag fetcher */
238 asn1_DEF_T2_tags,
239 sizeof(asn1_DEF_T2_tags)
240 /sizeof(asn1_DEF_T2_tags[0]), /* 3 */
Lev Walkin188ed2c2004-09-13 08:31:01 +0000241 asn1_DEF_T2_all_tags,
242 sizeof(asn1_DEF_T2_all_tags)
243 /sizeof(asn1_DEF_T2_all_tags[0]), /* 5 */
Lev Walkin906654e2004-09-10 15:49:15 +0000244 -0, /* Unknown yet */
245 0, 0, /* No members */
246 0 /* No specifics */
247};
248
249
250/*** <<< INCLUDES [T3] >>> ***/
251
252#include <T4.h>
253
254/*** <<< TYPE-DECLS [T3] >>> ***/
255
256
257typedef T4_t T3_t;
258
259/*** <<< FUNC-DECLS [T3] >>> ***/
260
261extern asn1_TYPE_descriptor_t asn1_DEF_T3;
Lev Walkina9cc46e2004-09-22 16:06:28 +0000262asn_struct_free_f T3_free;
263asn_struct_print_f T3_print;
Lev Walkin906654e2004-09-10 15:49:15 +0000264asn_constr_check_f T3_constraint;
265ber_type_decoder_f T3_decode_ber;
266der_type_encoder_f T3_encode_der;
Lev Walkina9cc46e2004-09-22 16:06:28 +0000267xer_type_encoder_f T3_encode_xer;
Lev Walkin906654e2004-09-10 15:49:15 +0000268
269/*** <<< CODE [T3] >>> ***/
270
271int
272T3_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
273 asn_app_consume_bytes_f *app_errlog, void *app_key) {
274
275 /* Make the underlying type checker permanent */
276 td->check_constraints = asn1_DEF_T4.check_constraints;
277 return td->check_constraints
278 (td, sptr, app_errlog, app_key);
279}
280
281/*
282 * This type is implemented using T4,
Lev Walkinc3808c12004-09-23 22:14:58 +0000283 * so here we adjust the DEF accordingly.
Lev Walkin906654e2004-09-10 15:49:15 +0000284 */
285static void
286T3_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
Lev Walkin906654e2004-09-10 15:49:15 +0000287 td->free_struct = asn1_DEF_T4.free_struct;
288 td->print_struct = asn1_DEF_T4.print_struct;
Lev Walkina9cc46e2004-09-22 16:06:28 +0000289 td->ber_decoder = asn1_DEF_T4.ber_decoder;
290 td->der_encoder = asn1_DEF_T4.der_encoder;
291 td->xer_decoder = asn1_DEF_T4.xer_decoder;
292 td->xer_encoder = asn1_DEF_T4.xer_encoder;
Lev Walkin906654e2004-09-10 15:49:15 +0000293 td->last_tag_form = asn1_DEF_T4.last_tag_form;
294 td->elements = asn1_DEF_T4.elements;
295 td->elements_count = asn1_DEF_T4.elements_count;
296 td->specifics = asn1_DEF_T4.specifics;
297}
298
Lev Walkina9cc46e2004-09-22 16:06:28 +0000299void
300T3_free(asn1_TYPE_descriptor_t *td,
301 void *struct_ptr, int contents_only) {
Lev Walkin906654e2004-09-10 15:49:15 +0000302 T3_inherit_TYPE_descriptor(td);
Lev Walkina9cc46e2004-09-22 16:06:28 +0000303 td->free_struct(td, struct_ptr, contents_only);
Lev Walkin906654e2004-09-10 15:49:15 +0000304}
305
306int
307T3_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
308 int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
309 T3_inherit_TYPE_descriptor(td);
310 return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
311}
312
Lev Walkina9cc46e2004-09-22 16:06:28 +0000313ber_dec_rval_t
314T3_decode_ber(asn1_TYPE_descriptor_t *td,
315 void **structure, void *bufptr, size_t size, int tag_mode) {
Lev Walkin906654e2004-09-10 15:49:15 +0000316 T3_inherit_TYPE_descriptor(td);
Lev Walkina9cc46e2004-09-22 16:06:28 +0000317 return td->ber_decoder(td, structure, bufptr, size, tag_mode);
318}
319
320asn_enc_rval_t
321T3_encode_der(asn1_TYPE_descriptor_t *td,
322 void *structure, int tag_mode, ber_tlv_tag_t tag,
323 asn_app_consume_bytes_f *cb, void *app_key) {
324 T3_inherit_TYPE_descriptor(td);
325 return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
326}
327
328asn_enc_rval_t
329T3_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
330 int ilevel, enum xer_encoder_flags_e flags,
331 asn_app_consume_bytes_f *cb, void *app_key) {
332 T3_inherit_TYPE_descriptor(td);
333 return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
Lev Walkin906654e2004-09-10 15:49:15 +0000334}
335
336
337/*** <<< STAT-DEFS [T3] >>> ***/
338
339static ber_tlv_tag_t asn1_DEF_T3_tags[] = {
340 (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
341 (ASN_TAG_CLASS_CONTEXT | (6 << 2))
342};
Lev Walkin188ed2c2004-09-13 08:31:01 +0000343static ber_tlv_tag_t asn1_DEF_T3_all_tags[] = {
344 (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
345 (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
346 (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
Lev Walkin2888f272004-09-14 12:46:58 +0000347 (ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
Lev Walkin188ed2c2004-09-13 08:31:01 +0000348};
Lev Walkin906654e2004-09-10 15:49:15 +0000349asn1_TYPE_descriptor_t asn1_DEF_T3 = {
350 "T3",
Lev Walkina9cc46e2004-09-22 16:06:28 +0000351 T3_free,
352 T3_print,
Lev Walkin906654e2004-09-10 15:49:15 +0000353 T3_constraint,
354 T3_decode_ber,
355 T3_encode_der,
Lev Walkina9cc46e2004-09-22 16:06:28 +0000356 0, /* Not implemented yet */
357 T3_encode_xer,
Lev Walkin906654e2004-09-10 15:49:15 +0000358 0, /* Use generic outmost tag fetcher */
359 asn1_DEF_T3_tags,
360 sizeof(asn1_DEF_T3_tags)
361 /sizeof(asn1_DEF_T3_tags[0]), /* 2 */
Lev Walkin188ed2c2004-09-13 08:31:01 +0000362 asn1_DEF_T3_all_tags,
363 sizeof(asn1_DEF_T3_all_tags)
364 /sizeof(asn1_DEF_T3_all_tags[0]), /* 4 */
Lev Walkin906654e2004-09-10 15:49:15 +0000365 -0, /* Unknown yet */
366 0, 0, /* No members */
367 0 /* No specifics */
368};
369
370
371/*** <<< INCLUDES [T4] >>> ***/
372
373#include <T5.h>
374
375/*** <<< TYPE-DECLS [T4] >>> ***/
376
377
378typedef T5_t T4_t;
379
380/*** <<< FUNC-DECLS [T4] >>> ***/
381
382extern asn1_TYPE_descriptor_t asn1_DEF_T4;
Lev Walkina9cc46e2004-09-22 16:06:28 +0000383asn_struct_free_f T4_free;
384asn_struct_print_f T4_print;
Lev Walkin906654e2004-09-10 15:49:15 +0000385asn_constr_check_f T4_constraint;
386ber_type_decoder_f T4_decode_ber;
387der_type_encoder_f T4_encode_der;
Lev Walkina9cc46e2004-09-22 16:06:28 +0000388xer_type_encoder_f T4_encode_xer;
Lev Walkin906654e2004-09-10 15:49:15 +0000389
390/*** <<< CODE [T4] >>> ***/
391
392int
393T4_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
394 asn_app_consume_bytes_f *app_errlog, void *app_key) {
395
396 /* Make the underlying type checker permanent */
397 td->check_constraints = asn1_DEF_T5.check_constraints;
398 return td->check_constraints
399 (td, sptr, app_errlog, app_key);
400}
401
402/*
403 * This type is implemented using T5,
Lev Walkinc3808c12004-09-23 22:14:58 +0000404 * so here we adjust the DEF accordingly.
Lev Walkin906654e2004-09-10 15:49:15 +0000405 */
406static void
407T4_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
Lev Walkin906654e2004-09-10 15:49:15 +0000408 td->free_struct = asn1_DEF_T5.free_struct;
409 td->print_struct = asn1_DEF_T5.print_struct;
Lev Walkina9cc46e2004-09-22 16:06:28 +0000410 td->ber_decoder = asn1_DEF_T5.ber_decoder;
411 td->der_encoder = asn1_DEF_T5.der_encoder;
412 td->xer_decoder = asn1_DEF_T5.xer_decoder;
413 td->xer_encoder = asn1_DEF_T5.xer_encoder;
Lev Walkin906654e2004-09-10 15:49:15 +0000414 td->last_tag_form = asn1_DEF_T5.last_tag_form;
415 td->elements = asn1_DEF_T5.elements;
416 td->elements_count = asn1_DEF_T5.elements_count;
417 td->specifics = asn1_DEF_T5.specifics;
418}
419
Lev Walkina9cc46e2004-09-22 16:06:28 +0000420void
421T4_free(asn1_TYPE_descriptor_t *td,
422 void *struct_ptr, int contents_only) {
Lev Walkin906654e2004-09-10 15:49:15 +0000423 T4_inherit_TYPE_descriptor(td);
Lev Walkina9cc46e2004-09-22 16:06:28 +0000424 td->free_struct(td, struct_ptr, contents_only);
Lev Walkin906654e2004-09-10 15:49:15 +0000425}
426
427int
428T4_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
429 int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
430 T4_inherit_TYPE_descriptor(td);
431 return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
432}
433
Lev Walkina9cc46e2004-09-22 16:06:28 +0000434ber_dec_rval_t
435T4_decode_ber(asn1_TYPE_descriptor_t *td,
436 void **structure, void *bufptr, size_t size, int tag_mode) {
Lev Walkin906654e2004-09-10 15:49:15 +0000437 T4_inherit_TYPE_descriptor(td);
Lev Walkina9cc46e2004-09-22 16:06:28 +0000438 return td->ber_decoder(td, structure, bufptr, size, tag_mode);
439}
440
441asn_enc_rval_t
442T4_encode_der(asn1_TYPE_descriptor_t *td,
443 void *structure, int tag_mode, ber_tlv_tag_t tag,
444 asn_app_consume_bytes_f *cb, void *app_key) {
445 T4_inherit_TYPE_descriptor(td);
446 return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
447}
448
449asn_enc_rval_t
450T4_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
451 int ilevel, enum xer_encoder_flags_e flags,
452 asn_app_consume_bytes_f *cb, void *app_key) {
453 T4_inherit_TYPE_descriptor(td);
454 return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
Lev Walkin906654e2004-09-10 15:49:15 +0000455}
456
457
458/*** <<< STAT-DEFS [T4] >>> ***/
459
460static ber_tlv_tag_t asn1_DEF_T4_tags[] = {
461 (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
Lev Walkin188ed2c2004-09-13 08:31:01 +0000462 (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
Lev Walkin2888f272004-09-14 12:46:58 +0000463 (ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
Lev Walkin906654e2004-09-10 15:49:15 +0000464};
465asn1_TYPE_descriptor_t asn1_DEF_T4 = {
466 "T4",
Lev Walkina9cc46e2004-09-22 16:06:28 +0000467 T4_free,
468 T4_print,
Lev Walkin906654e2004-09-10 15:49:15 +0000469 T4_constraint,
470 T4_decode_ber,
471 T4_encode_der,
Lev Walkina9cc46e2004-09-22 16:06:28 +0000472 0, /* Not implemented yet */
473 T4_encode_xer,
Lev Walkin906654e2004-09-10 15:49:15 +0000474 0, /* Use generic outmost tag fetcher */
475 asn1_DEF_T4_tags,
476 sizeof(asn1_DEF_T4_tags)
Lev Walkin188ed2c2004-09-13 08:31:01 +0000477 /sizeof(asn1_DEF_T4_tags[0]) - 1, /* 2 */
478 asn1_DEF_T4_tags, /* Same as above */
479 sizeof(asn1_DEF_T4_tags)
480 /sizeof(asn1_DEF_T4_tags[0]), /* 3 */
Lev Walkin906654e2004-09-10 15:49:15 +0000481 -0, /* Unknown yet */
482 0, 0, /* No members */
483 0 /* No specifics */
484};
485
486
487/*** <<< INCLUDES [T5] >>> ***/
488
489#include <T6.h>
490
491/*** <<< TYPE-DECLS [T5] >>> ***/
492
493
494typedef T6_t T5_t;
495
496/*** <<< FUNC-DECLS [T5] >>> ***/
497
498extern asn1_TYPE_descriptor_t asn1_DEF_T5;
Lev Walkina9cc46e2004-09-22 16:06:28 +0000499asn_struct_free_f T5_free;
500asn_struct_print_f T5_print;
Lev Walkin906654e2004-09-10 15:49:15 +0000501asn_constr_check_f T5_constraint;
502ber_type_decoder_f T5_decode_ber;
503der_type_encoder_f T5_encode_der;
Lev Walkina9cc46e2004-09-22 16:06:28 +0000504xer_type_encoder_f T5_encode_xer;
Lev Walkin906654e2004-09-10 15:49:15 +0000505
506/*** <<< CODE [T5] >>> ***/
507
508int
509T5_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
510 asn_app_consume_bytes_f *app_errlog, void *app_key) {
511
512 /* Make the underlying type checker permanent */
513 td->check_constraints = asn1_DEF_T6.check_constraints;
514 return td->check_constraints
515 (td, sptr, app_errlog, app_key);
516}
517
518/*
519 * This type is implemented using T6,
Lev Walkinc3808c12004-09-23 22:14:58 +0000520 * so here we adjust the DEF accordingly.
Lev Walkin906654e2004-09-10 15:49:15 +0000521 */
522static void
523T5_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
Lev Walkin906654e2004-09-10 15:49:15 +0000524 td->free_struct = asn1_DEF_T6.free_struct;
525 td->print_struct = asn1_DEF_T6.print_struct;
Lev Walkina9cc46e2004-09-22 16:06:28 +0000526 td->ber_decoder = asn1_DEF_T6.ber_decoder;
527 td->der_encoder = asn1_DEF_T6.der_encoder;
528 td->xer_decoder = asn1_DEF_T6.xer_decoder;
529 td->xer_encoder = asn1_DEF_T6.xer_encoder;
Lev Walkin906654e2004-09-10 15:49:15 +0000530 td->last_tag_form = asn1_DEF_T6.last_tag_form;
531 td->elements = asn1_DEF_T6.elements;
532 td->elements_count = asn1_DEF_T6.elements_count;
533 td->specifics = asn1_DEF_T6.specifics;
534}
535
Lev Walkina9cc46e2004-09-22 16:06:28 +0000536void
537T5_free(asn1_TYPE_descriptor_t *td,
538 void *struct_ptr, int contents_only) {
Lev Walkin906654e2004-09-10 15:49:15 +0000539 T5_inherit_TYPE_descriptor(td);
Lev Walkina9cc46e2004-09-22 16:06:28 +0000540 td->free_struct(td, struct_ptr, contents_only);
Lev Walkin906654e2004-09-10 15:49:15 +0000541}
542
543int
544T5_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
545 int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
546 T5_inherit_TYPE_descriptor(td);
547 return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
548}
549
Lev Walkina9cc46e2004-09-22 16:06:28 +0000550ber_dec_rval_t
551T5_decode_ber(asn1_TYPE_descriptor_t *td,
552 void **structure, void *bufptr, size_t size, int tag_mode) {
Lev Walkin906654e2004-09-10 15:49:15 +0000553 T5_inherit_TYPE_descriptor(td);
Lev Walkina9cc46e2004-09-22 16:06:28 +0000554 return td->ber_decoder(td, structure, bufptr, size, tag_mode);
555}
556
557asn_enc_rval_t
558T5_encode_der(asn1_TYPE_descriptor_t *td,
559 void *structure, int tag_mode, ber_tlv_tag_t tag,
560 asn_app_consume_bytes_f *cb, void *app_key) {
561 T5_inherit_TYPE_descriptor(td);
562 return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
563}
564
565asn_enc_rval_t
566T5_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
567 int ilevel, enum xer_encoder_flags_e flags,
568 asn_app_consume_bytes_f *cb, void *app_key) {
569 T5_inherit_TYPE_descriptor(td);
570 return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
Lev Walkin906654e2004-09-10 15:49:15 +0000571}
572
573
574/*** <<< STAT-DEFS [T5] >>> ***/
575
576static ber_tlv_tag_t asn1_DEF_T5_tags[] = {
Lev Walkin188ed2c2004-09-13 08:31:01 +0000577 (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
Lev Walkin2888f272004-09-14 12:46:58 +0000578 (ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
Lev Walkin906654e2004-09-10 15:49:15 +0000579};
580asn1_TYPE_descriptor_t asn1_DEF_T5 = {
581 "T5",
Lev Walkina9cc46e2004-09-22 16:06:28 +0000582 T5_free,
583 T5_print,
Lev Walkin906654e2004-09-10 15:49:15 +0000584 T5_constraint,
585 T5_decode_ber,
586 T5_encode_der,
Lev Walkina9cc46e2004-09-22 16:06:28 +0000587 0, /* Not implemented yet */
588 T5_encode_xer,
Lev Walkin906654e2004-09-10 15:49:15 +0000589 0, /* Use generic outmost tag fetcher */
590 asn1_DEF_T5_tags,
591 sizeof(asn1_DEF_T5_tags)
Lev Walkin188ed2c2004-09-13 08:31:01 +0000592 /sizeof(asn1_DEF_T5_tags[0]) - 1, /* 1 */
593 asn1_DEF_T5_tags, /* Same as above */
594 sizeof(asn1_DEF_T5_tags)
595 /sizeof(asn1_DEF_T5_tags[0]), /* 2 */
Lev Walkin906654e2004-09-10 15:49:15 +0000596 -0, /* Unknown yet */
597 0, 0, /* No members */
598 0 /* No specifics */
599};
600
601
602/*** <<< INCLUDES [T6] >>> ***/
603
Lev Walkin2888f272004-09-14 12:46:58 +0000604#include <REAL.h>
Lev Walkin906654e2004-09-10 15:49:15 +0000605
606/*** <<< TYPE-DECLS [T6] >>> ***/
607
608
Lev Walkin2888f272004-09-14 12:46:58 +0000609typedef REAL_t T6_t;
Lev Walkin906654e2004-09-10 15:49:15 +0000610
611/*** <<< FUNC-DECLS [T6] >>> ***/
612
613extern asn1_TYPE_descriptor_t asn1_DEF_T6;
Lev Walkina9cc46e2004-09-22 16:06:28 +0000614asn_struct_free_f T6_free;
615asn_struct_print_f T6_print;
Lev Walkin906654e2004-09-10 15:49:15 +0000616asn_constr_check_f T6_constraint;
617ber_type_decoder_f T6_decode_ber;
618der_type_encoder_f T6_encode_der;
Lev Walkina9cc46e2004-09-22 16:06:28 +0000619xer_type_encoder_f T6_encode_xer;
Lev Walkin906654e2004-09-10 15:49:15 +0000620
621/*** <<< CODE [T6] >>> ***/
622
623int
624T6_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
625 asn_app_consume_bytes_f *app_errlog, void *app_key) {
626
627 /* Make the underlying type checker permanent */
Lev Walkin2888f272004-09-14 12:46:58 +0000628 td->check_constraints = asn1_DEF_REAL.check_constraints;
Lev Walkin906654e2004-09-10 15:49:15 +0000629 return td->check_constraints
630 (td, sptr, app_errlog, app_key);
631}
632
633/*
Lev Walkin2888f272004-09-14 12:46:58 +0000634 * This type is implemented using REAL,
Lev Walkinc3808c12004-09-23 22:14:58 +0000635 * so here we adjust the DEF accordingly.
Lev Walkin906654e2004-09-10 15:49:15 +0000636 */
637static void
638T6_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
Lev Walkin2888f272004-09-14 12:46:58 +0000639 td->free_struct = asn1_DEF_REAL.free_struct;
640 td->print_struct = asn1_DEF_REAL.print_struct;
Lev Walkina9cc46e2004-09-22 16:06:28 +0000641 td->ber_decoder = asn1_DEF_REAL.ber_decoder;
642 td->der_encoder = asn1_DEF_REAL.der_encoder;
643 td->xer_decoder = asn1_DEF_REAL.xer_decoder;
644 td->xer_encoder = asn1_DEF_REAL.xer_encoder;
Lev Walkin2888f272004-09-14 12:46:58 +0000645 td->last_tag_form = asn1_DEF_REAL.last_tag_form;
646 td->elements = asn1_DEF_REAL.elements;
647 td->elements_count = asn1_DEF_REAL.elements_count;
648 td->specifics = asn1_DEF_REAL.specifics;
Lev Walkin906654e2004-09-10 15:49:15 +0000649}
650
Lev Walkina9cc46e2004-09-22 16:06:28 +0000651void
652T6_free(asn1_TYPE_descriptor_t *td,
653 void *struct_ptr, int contents_only) {
Lev Walkin906654e2004-09-10 15:49:15 +0000654 T6_inherit_TYPE_descriptor(td);
Lev Walkina9cc46e2004-09-22 16:06:28 +0000655 td->free_struct(td, struct_ptr, contents_only);
Lev Walkin906654e2004-09-10 15:49:15 +0000656}
657
658int
659T6_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
660 int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
661 T6_inherit_TYPE_descriptor(td);
662 return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
663}
664
Lev Walkina9cc46e2004-09-22 16:06:28 +0000665ber_dec_rval_t
666T6_decode_ber(asn1_TYPE_descriptor_t *td,
667 void **structure, void *bufptr, size_t size, int tag_mode) {
Lev Walkin906654e2004-09-10 15:49:15 +0000668 T6_inherit_TYPE_descriptor(td);
Lev Walkina9cc46e2004-09-22 16:06:28 +0000669 return td->ber_decoder(td, structure, bufptr, size, tag_mode);
670}
671
672asn_enc_rval_t
673T6_encode_der(asn1_TYPE_descriptor_t *td,
674 void *structure, int tag_mode, ber_tlv_tag_t tag,
675 asn_app_consume_bytes_f *cb, void *app_key) {
676 T6_inherit_TYPE_descriptor(td);
677 return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
678}
679
680asn_enc_rval_t
681T6_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
682 int ilevel, enum xer_encoder_flags_e flags,
683 asn_app_consume_bytes_f *cb, void *app_key) {
684 T6_inherit_TYPE_descriptor(td);
685 return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
Lev Walkin906654e2004-09-10 15:49:15 +0000686}
687
688
689/*** <<< STAT-DEFS [T6] >>> ***/
690
691static ber_tlv_tag_t asn1_DEF_T6_tags[] = {
Lev Walkin2888f272004-09-14 12:46:58 +0000692 (ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
Lev Walkin906654e2004-09-10 15:49:15 +0000693};
694asn1_TYPE_descriptor_t asn1_DEF_T6 = {
695 "T6",
Lev Walkina9cc46e2004-09-22 16:06:28 +0000696 T6_free,
697 T6_print,
Lev Walkin906654e2004-09-10 15:49:15 +0000698 T6_constraint,
699 T6_decode_ber,
700 T6_encode_der,
Lev Walkina9cc46e2004-09-22 16:06:28 +0000701 0, /* Not implemented yet */
702 T6_encode_xer,
Lev Walkin906654e2004-09-10 15:49:15 +0000703 0, /* Use generic outmost tag fetcher */
704 asn1_DEF_T6_tags,
705 sizeof(asn1_DEF_T6_tags)
706 /sizeof(asn1_DEF_T6_tags[0]), /* 1 */
Lev Walkin188ed2c2004-09-13 08:31:01 +0000707 asn1_DEF_T6_tags, /* Same as above */
708 sizeof(asn1_DEF_T6_tags)
709 /sizeof(asn1_DEF_T6_tags[0]), /* 1 */
Lev Walkin906654e2004-09-10 15:49:15 +0000710 -0, /* Unknown yet */
711 0, 0, /* No members */
712 0 /* No specifics */
713};
714
715
716/*** <<< INCLUDES [T] >>> ***/
717
718#include <Ts.h>
719
720/*** <<< TYPE-DECLS [T] >>> ***/
721
722
723typedef Ts_t T_t;
724
725/*** <<< FUNC-DECLS [T] >>> ***/
726
727extern asn1_TYPE_descriptor_t asn1_DEF_T;
Lev Walkina9cc46e2004-09-22 16:06:28 +0000728asn_struct_free_f T_free;
729asn_struct_print_f T_print;
Lev Walkin906654e2004-09-10 15:49:15 +0000730asn_constr_check_f T_constraint;
731ber_type_decoder_f T_decode_ber;
732der_type_encoder_f T_encode_der;
Lev Walkina9cc46e2004-09-22 16:06:28 +0000733xer_type_encoder_f T_encode_xer;
Lev Walkin906654e2004-09-10 15:49:15 +0000734
735/*** <<< CODE [T] >>> ***/
736
737int
738T_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
739 asn_app_consume_bytes_f *app_errlog, void *app_key) {
740
741 /* Make the underlying type checker permanent */
742 td->check_constraints = asn1_DEF_Ts.check_constraints;
743 return td->check_constraints
744 (td, sptr, app_errlog, app_key);
745}
746
747/*
748 * This type is implemented using Ts,
Lev Walkinc3808c12004-09-23 22:14:58 +0000749 * so here we adjust the DEF accordingly.
Lev Walkin906654e2004-09-10 15:49:15 +0000750 */
751static void
752T_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
Lev Walkin906654e2004-09-10 15:49:15 +0000753 td->free_struct = asn1_DEF_Ts.free_struct;
754 td->print_struct = asn1_DEF_Ts.print_struct;
Lev Walkina9cc46e2004-09-22 16:06:28 +0000755 td->ber_decoder = asn1_DEF_Ts.ber_decoder;
756 td->der_encoder = asn1_DEF_Ts.der_encoder;
757 td->xer_decoder = asn1_DEF_Ts.xer_decoder;
758 td->xer_encoder = asn1_DEF_Ts.xer_encoder;
Lev Walkin906654e2004-09-10 15:49:15 +0000759 td->last_tag_form = asn1_DEF_Ts.last_tag_form;
760 td->elements = asn1_DEF_Ts.elements;
761 td->elements_count = asn1_DEF_Ts.elements_count;
762 td->specifics = asn1_DEF_Ts.specifics;
763}
764
Lev Walkina9cc46e2004-09-22 16:06:28 +0000765void
766T_free(asn1_TYPE_descriptor_t *td,
767 void *struct_ptr, int contents_only) {
Lev Walkin906654e2004-09-10 15:49:15 +0000768 T_inherit_TYPE_descriptor(td);
Lev Walkina9cc46e2004-09-22 16:06:28 +0000769 td->free_struct(td, struct_ptr, contents_only);
Lev Walkin906654e2004-09-10 15:49:15 +0000770}
771
772int
773T_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
774 int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
775 T_inherit_TYPE_descriptor(td);
776 return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
777}
778
Lev Walkina9cc46e2004-09-22 16:06:28 +0000779ber_dec_rval_t
780T_decode_ber(asn1_TYPE_descriptor_t *td,
781 void **structure, void *bufptr, size_t size, int tag_mode) {
Lev Walkin906654e2004-09-10 15:49:15 +0000782 T_inherit_TYPE_descriptor(td);
Lev Walkina9cc46e2004-09-22 16:06:28 +0000783 return td->ber_decoder(td, structure, bufptr, size, tag_mode);
784}
785
786asn_enc_rval_t
787T_encode_der(asn1_TYPE_descriptor_t *td,
788 void *structure, int tag_mode, ber_tlv_tag_t tag,
789 asn_app_consume_bytes_f *cb, void *app_key) {
790 T_inherit_TYPE_descriptor(td);
791 return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
792}
793
794asn_enc_rval_t
795T_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
796 int ilevel, enum xer_encoder_flags_e flags,
797 asn_app_consume_bytes_f *cb, void *app_key) {
798 T_inherit_TYPE_descriptor(td);
799 return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
Lev Walkin906654e2004-09-10 15:49:15 +0000800}
801
802
803/*** <<< STAT-DEFS [T] >>> ***/
804
805static ber_tlv_tag_t asn1_DEF_T_tags[] = {
Lev Walkin188ed2c2004-09-13 08:31:01 +0000806 (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
807 (ASN_TAG_CLASS_CONTEXT | (123 << 2)),
808 (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
Lev Walkin906654e2004-09-10 15:49:15 +0000809};
810asn1_TYPE_descriptor_t asn1_DEF_T = {
811 "T",
Lev Walkina9cc46e2004-09-22 16:06:28 +0000812 T_free,
813 T_print,
Lev Walkin906654e2004-09-10 15:49:15 +0000814 T_constraint,
815 T_decode_ber,
816 T_encode_der,
Lev Walkina9cc46e2004-09-22 16:06:28 +0000817 0, /* Not implemented yet */
818 T_encode_xer,
Lev Walkin906654e2004-09-10 15:49:15 +0000819 0, /* Use generic outmost tag fetcher */
820 asn1_DEF_T_tags,
821 sizeof(asn1_DEF_T_tags)
Lev Walkin188ed2c2004-09-13 08:31:01 +0000822 /sizeof(asn1_DEF_T_tags[0]) - 2, /* 1 */
823 asn1_DEF_T_tags, /* Same as above */
824 sizeof(asn1_DEF_T_tags)
825 /sizeof(asn1_DEF_T_tags[0]), /* 3 */
Lev Walkin906654e2004-09-10 15:49:15 +0000826 -0, /* Unknown yet */
827 0, 0, /* Defined elsewhere */
828 0 /* No specifics */
829};
830
831
832/*** <<< INCLUDES [Ts] >>> ***/
833
834#include <T2.h>
835#include <T3.h>
836#include <constr_SEQUENCE.h>
837
838/*** <<< DEPS [Ts] >>> ***/
839
840extern asn1_TYPE_descriptor_t asn1_DEF_Ts;
841
842/*** <<< TYPE-DECLS [Ts] >>> ***/
843
844
845typedef struct Ts {
846 T2_t m1;
847 T3_t *m2 /* OPTIONAL */;
848 T3_t m3;
849
850 /* Context for parsing across buffer boundaries */
851 ber_dec_ctx_t _ber_dec_ctx;
852} Ts_t;
853
854/*** <<< STAT-DEFS [Ts] >>> ***/
855
856static asn1_TYPE_member_t asn1_MBR_Ts[] = {
857 { ATF_NOFLAGS, 0, offsetof(struct Ts, m1),
858 .tag = (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
859 .tag_mode = -1, /* IMPLICIT tag at current level */
860 .type = (void *)&asn1_DEF_T2,
861 .memb_constraints = 0, /* Defer to actual type */
862 .name = "m1"
863 },
864 { ATF_POINTER, 1, offsetof(struct Ts, m2),
865 .tag = (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
866 .tag_mode = +1, /* EXPLICIT tag at current level */
867 .type = (void *)&asn1_DEF_T3,
868 .memb_constraints = 0, /* Defer to actual type */
869 .name = "m2"
870 },
871 { ATF_NOFLAGS, 0, offsetof(struct Ts, m3),
872 .tag = (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
873 .tag_mode = -1, /* IMPLICIT tag at current level */
874 .type = (void *)&asn1_DEF_T3,
875 .memb_constraints = 0, /* Defer to actual type */
876 .name = "m3"
877 },
878};
879static ber_tlv_tag_t asn1_DEF_Ts_tags[] = {
Lev Walkin188ed2c2004-09-13 08:31:01 +0000880 (ASN_TAG_CLASS_CONTEXT | (123 << 2)),
881 (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
Lev Walkin906654e2004-09-10 15:49:15 +0000882};
883static asn1_TYPE_tag2member_t asn1_DEF_Ts_tag2el[] = {
884 { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* m1 at 24 */
885 { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* m2 at 25 */
886 { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* m3 at 27 */
887};
888static asn1_SEQUENCE_specifics_t asn1_DEF_Ts_specs = {
889 sizeof(struct Ts),
890 offsetof(struct Ts, _ber_dec_ctx),
891 asn1_DEF_Ts_tag2el,
892 3, /* Count of tags in the map */
893 -1, /* Start extensions */
894 -1 /* Stop extensions */
895};
896asn1_TYPE_descriptor_t asn1_DEF_Ts = {
897 "Ts",
Lev Walkina9cc46e2004-09-22 16:06:28 +0000898 SEQUENCE_free,
899 SEQUENCE_print,
Lev Walkin906654e2004-09-10 15:49:15 +0000900 SEQUENCE_constraint,
901 SEQUENCE_decode_ber,
902 SEQUENCE_encode_der,
Lev Walkina9cc46e2004-09-22 16:06:28 +0000903 0, /* Not implemented yet */
904 SEQUENCE_encode_xer,
Lev Walkin906654e2004-09-10 15:49:15 +0000905 0, /* Use generic outmost tag fetcher */
906 asn1_DEF_Ts_tags,
907 sizeof(asn1_DEF_Ts_tags)
Lev Walkin188ed2c2004-09-13 08:31:01 +0000908 /sizeof(asn1_DEF_Ts_tags[0]) - 1, /* 1 */
909 asn1_DEF_Ts_tags, /* Same as above */
910 sizeof(asn1_DEF_Ts_tags)
911 /sizeof(asn1_DEF_Ts_tags[0]), /* 2 */
Lev Walkin906654e2004-09-10 15:49:15 +0000912 1, /* Whether CONSTRUCTED */
913 asn1_MBR_Ts,
914 3, /* Elements count */
915 &asn1_DEF_Ts_specs /* Additional specs */
916};
917