blob: 9521de29a4ba40cd3bda6032bede43cad32c5400 [file] [log] [blame]
Lev Walkin5bbff1e2004-06-28 21:13:22 +00001
Lev Walkinb47ddce2004-08-11 05:25:47 +00002/*** <<< INCLUDES [PrimitiveType] >>> ***/
Lev Walkin5bbff1e2004-06-28 21:13:22 +00003
4#include <OCTET_STRING.h>
5
6/*** <<< TYPE-DECLS [PrimitiveType] >>> ***/
7
Lev Walkin5bbff1e2004-06-28 21:13:22 +00008typedef OCTET_STRING_t PrimitiveType_t;
9
Lev Walkin5bbff1e2004-06-28 21:13:22 +000010/*** <<< FUNC-DECLS [PrimitiveType] >>> ***/
11
Lev Walkincaf0d5a2005-03-04 23:48:19 +000012extern asn_TYPE_descriptor_t asn_DEF_PrimitiveType;
13asn_struct_free_f PrimitiveType_free;
14asn_struct_print_f PrimitiveType_print;
15asn_constr_check_f PrimitiveType_constraint;
16ber_type_decoder_f PrimitiveType_decode_ber;
17der_type_encoder_f PrimitiveType_encode_der;
18xer_type_decoder_f PrimitiveType_decode_xer;
19xer_type_encoder_f PrimitiveType_encode_xer;
Lev Walkin5bbff1e2004-06-28 21:13:22 +000020
Lev Walkin2e3055d2004-08-20 13:36:32 +000021/*** <<< CODE [PrimitiveType] >>> ***/
22
Lev Walkincaf0d5a2005-03-04 23:48:19 +000023int
24PrimitiveType_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
25 asn_app_consume_bytes_f *app_errlog, void *app_key) {
26 /* Replace with underlying type checker */
27 td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
28 return td->check_constraints(td, sptr, app_errlog, app_key);
29}
30
31/*
32 * This type is implemented using OCTET_STRING,
33 * so here we adjust the DEF accordingly.
34 */
35static void
Lev Walkine8318b82005-03-06 09:29:03 +000036PrimitiveType_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
Lev Walkincaf0d5a2005-03-04 23:48:19 +000037 td->free_struct = asn_DEF_OCTET_STRING.free_struct;
38 td->print_struct = asn_DEF_OCTET_STRING.print_struct;
39 td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
40 td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
41 td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
42 td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
43 td->elements = asn_DEF_OCTET_STRING.elements;
44 td->elements_count = asn_DEF_OCTET_STRING.elements_count;
45 td->specifics = asn_DEF_OCTET_STRING.specifics;
46}
47
48void
49PrimitiveType_free(asn_TYPE_descriptor_t *td,
50 void *struct_ptr, int contents_only) {
Lev Walkine8318b82005-03-06 09:29:03 +000051 PrimitiveType_1_inherit_TYPE_descriptor(td);
Lev Walkincaf0d5a2005-03-04 23:48:19 +000052 td->free_struct(td, struct_ptr, contents_only);
53}
54
55int
56PrimitiveType_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
57 int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
Lev Walkine8318b82005-03-06 09:29:03 +000058 PrimitiveType_1_inherit_TYPE_descriptor(td);
Lev Walkincaf0d5a2005-03-04 23:48:19 +000059 return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
60}
61
62asn_dec_rval_t
63PrimitiveType_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
Lev Walkin3ebc65a2005-03-17 21:57:19 +000064 void **structure, const void *bufptr, size_t size, int tag_mode) {
Lev Walkine8318b82005-03-06 09:29:03 +000065 PrimitiveType_1_inherit_TYPE_descriptor(td);
Lev Walkincaf0d5a2005-03-04 23:48:19 +000066 return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
67}
68
69asn_enc_rval_t
70PrimitiveType_encode_der(asn_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) {
Lev Walkine8318b82005-03-06 09:29:03 +000073 PrimitiveType_1_inherit_TYPE_descriptor(td);
Lev Walkincaf0d5a2005-03-04 23:48:19 +000074 return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
75}
76
77asn_dec_rval_t
78PrimitiveType_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
Lev Walkin3ebc65a2005-03-17 21:57:19 +000079 void **structure, const char *opt_mname, const void *bufptr, size_t size) {
Lev Walkine8318b82005-03-06 09:29:03 +000080 PrimitiveType_1_inherit_TYPE_descriptor(td);
Lev Walkincaf0d5a2005-03-04 23:48:19 +000081 return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
82}
83
84asn_enc_rval_t
85PrimitiveType_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
86 int ilevel, enum xer_encoder_flags_e flags,
87 asn_app_consume_bytes_f *cb, void *app_key) {
Lev Walkine8318b82005-03-06 09:29:03 +000088 PrimitiveType_1_inherit_TYPE_descriptor(td);
Lev Walkincaf0d5a2005-03-04 23:48:19 +000089 return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
90}
91
92
93/*** <<< STAT-DEFS [PrimitiveType] >>> ***/
94
Lev Walkine8318b82005-03-06 09:29:03 +000095static ber_tlv_tag_t asn_DEF_PrimitiveType_1_tags[] = {
Lev Walkincaf0d5a2005-03-04 23:48:19 +000096 (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
97};
98asn_TYPE_descriptor_t asn_DEF_PrimitiveType = {
99 "PrimitiveType",
100 "PrimitiveType",
101 PrimitiveType_free,
102 PrimitiveType_print,
103 PrimitiveType_constraint,
104 PrimitiveType_decode_ber,
105 PrimitiveType_encode_der,
106 PrimitiveType_decode_xer,
107 PrimitiveType_encode_xer,
108 0, /* Use generic outmost tag fetcher */
Lev Walkine8318b82005-03-06 09:29:03 +0000109 asn_DEF_PrimitiveType_1_tags,
110 sizeof(asn_DEF_PrimitiveType_1_tags)
111 /sizeof(asn_DEF_PrimitiveType_1_tags[0]), /* 1 */
112 asn_DEF_PrimitiveType_1_tags, /* Same as above */
113 sizeof(asn_DEF_PrimitiveType_1_tags)
114 /sizeof(asn_DEF_PrimitiveType_1_tags[0]), /* 1 */
Lev Walkincaf0d5a2005-03-04 23:48:19 +0000115 0, 0, /* No members */
116 0 /* No specifics */
117};
Lev Walkin5bbff1e2004-06-28 21:13:22 +0000118
Lev Walkin5bbff1e2004-06-28 21:13:22 +0000119
Lev Walkinb47ddce2004-08-11 05:25:47 +0000120/*** <<< INCLUDES [ConstructedType] >>> ***/
Lev Walkin5bbff1e2004-06-28 21:13:22 +0000121
Lev Walkin5bbff1e2004-06-28 21:13:22 +0000122#include <PrimitiveType.h>
Lev Walkin5bbff1e2004-06-28 21:13:22 +0000123#include <constr_SEQUENCE.h>
124
Lev Walkin5bbff1e2004-06-28 21:13:22 +0000125/*** <<< TYPE-DECLS [ConstructedType] >>> ***/
126
Lev Walkin5bbff1e2004-06-28 21:13:22 +0000127typedef struct ConstructedType {
128 PrimitiveType_t field;
129
130 /* Context for parsing across buffer boundaries */
Lev Walkindfae9752004-09-29 13:19:37 +0000131 asn_struct_ctx_t _asn_ctx;
Lev Walkin5bbff1e2004-06-28 21:13:22 +0000132} ConstructedType_t;
133
Lev Walkinc8285712005-03-04 22:18:20 +0000134/*** <<< FUNC-DECLS [ConstructedType] >>> ***/
135
136extern asn_TYPE_descriptor_t asn_DEF_ConstructedType;
137
Lev Walkin5bbff1e2004-06-28 21:13:22 +0000138/*** <<< STAT-DEFS [ConstructedType] >>> ***/
139
Lev Walkine0272aa2005-03-04 11:26:08 +0000140static asn_TYPE_member_t asn_MBR_ConstructedType_1[] = {
Lev Walkincc93b0f2004-09-10 09:18:20 +0000141 { ATF_NOFLAGS, 0, offsetof(struct ConstructedType, field),
Lev Walkin2e3055d2004-08-20 13:36:32 +0000142 .tag = (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
143 .tag_mode = -1, /* IMPLICIT tag at current level */
Lev Walkinae7bf3f2005-08-29 10:31:14 +0000144 .type = &asn_DEF_PrimitiveType,
Lev Walkinba58e1b2005-01-17 12:20:19 +0000145 .memb_constraints = 0, /* Defer constraints checking to the member type */
Lev Walkin2e3055d2004-08-20 13:36:32 +0000146 .name = "field"
Lev Walkin5bbff1e2004-06-28 21:13:22 +0000147 },
148};
Lev Walkine0272aa2005-03-04 11:26:08 +0000149static ber_tlv_tag_t asn_DEF_ConstructedType_1_tags[] = {
Lev Walkin5bbff1e2004-06-28 21:13:22 +0000150 (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
151};
Lev Walkine0272aa2005-03-04 11:26:08 +0000152static asn_TYPE_tag2member_t asn_MAP_ConstructedType_1_tag2el[] = {
Lev Walkin55236182005-02-25 08:24:19 +0000153 { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 0, 0, 0 } /* field at 18 */
Lev Walkin5bbff1e2004-06-28 21:13:22 +0000154};
Lev Walkine0272aa2005-03-04 11:26:08 +0000155static asn_SEQUENCE_specifics_t asn_SPC_ConstructedType_1_specs = {
Lev Walkin5bbff1e2004-06-28 21:13:22 +0000156 sizeof(struct ConstructedType),
Lev Walkindfae9752004-09-29 13:19:37 +0000157 offsetof(struct ConstructedType, _asn_ctx),
Lev Walkine0272aa2005-03-04 11:26:08 +0000158 asn_MAP_ConstructedType_1_tag2el,
Lev Walkin5bbff1e2004-06-28 21:13:22 +0000159 1, /* Count of tags in the map */
160 -1, /* Start extensions */
161 -1 /* Stop extensions */
162};
Lev Walkindfae9752004-09-29 13:19:37 +0000163asn_TYPE_descriptor_t asn_DEF_ConstructedType = {
Lev Walkin5bbff1e2004-06-28 21:13:22 +0000164 "ConstructedType",
Lev Walkindc06f6b2004-10-20 15:50:55 +0000165 "ConstructedType",
Lev Walkina9cc46e2004-09-22 16:06:28 +0000166 SEQUENCE_free,
167 SEQUENCE_print,
Lev Walkin5bbff1e2004-06-28 21:13:22 +0000168 SEQUENCE_constraint,
169 SEQUENCE_decode_ber,
170 SEQUENCE_encode_der,
Lev Walkin61b40d82004-10-23 15:07:45 +0000171 SEQUENCE_decode_xer,
Lev Walkina9cc46e2004-09-22 16:06:28 +0000172 SEQUENCE_encode_xer,
Lev Walkin5bbff1e2004-06-28 21:13:22 +0000173 0, /* Use generic outmost tag fetcher */
Lev Walkine0272aa2005-03-04 11:26:08 +0000174 asn_DEF_ConstructedType_1_tags,
175 sizeof(asn_DEF_ConstructedType_1_tags)
176 /sizeof(asn_DEF_ConstructedType_1_tags[0]), /* 1 */
177 asn_DEF_ConstructedType_1_tags, /* Same as above */
178 sizeof(asn_DEF_ConstructedType_1_tags)
179 /sizeof(asn_DEF_ConstructedType_1_tags[0]), /* 1 */
180 asn_MBR_ConstructedType_1,
Lev Walkin2e3055d2004-08-20 13:36:32 +0000181 1, /* Elements count */
Lev Walkine0272aa2005-03-04 11:26:08 +0000182 &asn_SPC_ConstructedType_1_specs /* Additional specs */
Lev Walkin5bbff1e2004-06-28 21:13:22 +0000183};
184
185
Lev Walkinb47ddce2004-08-11 05:25:47 +0000186/*** <<< INCLUDES [T] >>> ***/
Lev Walkin5bbff1e2004-06-28 21:13:22 +0000187
188#include <ConstructedType.h>
189
190/*** <<< TYPE-DECLS [T] >>> ***/
191
Lev Walkin5bbff1e2004-06-28 21:13:22 +0000192typedef ConstructedType_t T_t;
193
Lev Walkin5bbff1e2004-06-28 21:13:22 +0000194/*** <<< FUNC-DECLS [T] >>> ***/
195
Lev Walkindfae9752004-09-29 13:19:37 +0000196extern asn_TYPE_descriptor_t asn_DEF_T;
Lev Walkina9cc46e2004-09-22 16:06:28 +0000197asn_struct_free_f T_free;
198asn_struct_print_f T_print;
Lev Walkin5bbff1e2004-06-28 21:13:22 +0000199asn_constr_check_f T_constraint;
200ber_type_decoder_f T_decode_ber;
201der_type_encoder_f T_encode_der;
Lev Walkin0ebe8b32004-10-23 13:26:56 +0000202xer_type_decoder_f T_decode_xer;
Lev Walkina9cc46e2004-09-22 16:06:28 +0000203xer_type_encoder_f T_encode_xer;
Lev Walkin5bbff1e2004-06-28 21:13:22 +0000204
Lev Walkin2e3055d2004-08-20 13:36:32 +0000205/*** <<< CODE [T] >>> ***/
206
207int
Lev Walkindfae9752004-09-29 13:19:37 +0000208T_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
Lev Walkin2e3055d2004-08-20 13:36:32 +0000209 asn_app_consume_bytes_f *app_errlog, void *app_key) {
Lev Walkin154aa182004-09-26 13:12:56 +0000210 /* Replace with underlying type checker */
Lev Walkindfae9752004-09-29 13:19:37 +0000211 td->check_constraints = asn_DEF_ConstructedType.check_constraints;
Lev Walkin154aa182004-09-26 13:12:56 +0000212 return td->check_constraints(td, sptr, app_errlog, app_key);
Lev Walkin2e3055d2004-08-20 13:36:32 +0000213}
214
215/*
216 * This type is implemented using ConstructedType,
Lev Walkinc3808c12004-09-23 22:14:58 +0000217 * so here we adjust the DEF accordingly.
Lev Walkin2e3055d2004-08-20 13:36:32 +0000218 */
219static void
Lev Walkine8318b82005-03-06 09:29:03 +0000220T_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
Lev Walkindfae9752004-09-29 13:19:37 +0000221 td->free_struct = asn_DEF_ConstructedType.free_struct;
222 td->print_struct = asn_DEF_ConstructedType.print_struct;
223 td->ber_decoder = asn_DEF_ConstructedType.ber_decoder;
224 td->der_encoder = asn_DEF_ConstructedType.der_encoder;
225 td->xer_decoder = asn_DEF_ConstructedType.xer_decoder;
226 td->xer_encoder = asn_DEF_ConstructedType.xer_encoder;
227 td->elements = asn_DEF_ConstructedType.elements;
228 td->elements_count = asn_DEF_ConstructedType.elements_count;
229 td->specifics = asn_DEF_ConstructedType.specifics;
Lev Walkin2e3055d2004-08-20 13:36:32 +0000230}
231
Lev Walkina9cc46e2004-09-22 16:06:28 +0000232void
Lev Walkindfae9752004-09-29 13:19:37 +0000233T_free(asn_TYPE_descriptor_t *td,
Lev Walkina9cc46e2004-09-22 16:06:28 +0000234 void *struct_ptr, int contents_only) {
Lev Walkine8318b82005-03-06 09:29:03 +0000235 T_1_inherit_TYPE_descriptor(td);
Lev Walkina9cc46e2004-09-22 16:06:28 +0000236 td->free_struct(td, struct_ptr, contents_only);
Lev Walkin2e3055d2004-08-20 13:36:32 +0000237}
238
239int
Lev Walkindfae9752004-09-29 13:19:37 +0000240T_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
Lev Walkin2e3055d2004-08-20 13:36:32 +0000241 int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
Lev Walkine8318b82005-03-06 09:29:03 +0000242 T_1_inherit_TYPE_descriptor(td);
Lev Walkin2e3055d2004-08-20 13:36:32 +0000243 return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
244}
245
Lev Walkindc06f6b2004-10-20 15:50:55 +0000246asn_dec_rval_t
Lev Walkindfae9752004-09-29 13:19:37 +0000247T_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
Lev Walkin3ebc65a2005-03-17 21:57:19 +0000248 void **structure, const void *bufptr, size_t size, int tag_mode) {
Lev Walkine8318b82005-03-06 09:29:03 +0000249 T_1_inherit_TYPE_descriptor(td);
Lev Walkindfae9752004-09-29 13:19:37 +0000250 return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
Lev Walkina9cc46e2004-09-22 16:06:28 +0000251}
252
253asn_enc_rval_t
Lev Walkindfae9752004-09-29 13:19:37 +0000254T_encode_der(asn_TYPE_descriptor_t *td,
Lev Walkina9cc46e2004-09-22 16:06:28 +0000255 void *structure, int tag_mode, ber_tlv_tag_t tag,
256 asn_app_consume_bytes_f *cb, void *app_key) {
Lev Walkine8318b82005-03-06 09:29:03 +0000257 T_1_inherit_TYPE_descriptor(td);
Lev Walkina9cc46e2004-09-22 16:06:28 +0000258 return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
259}
260
Lev Walkin0ebe8b32004-10-23 13:26:56 +0000261asn_dec_rval_t
262T_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
Lev Walkin3ebc65a2005-03-17 21:57:19 +0000263 void **structure, const char *opt_mname, const void *bufptr, size_t size) {
Lev Walkine8318b82005-03-06 09:29:03 +0000264 T_1_inherit_TYPE_descriptor(td);
Lev Walkin0ebe8b32004-10-23 13:26:56 +0000265 return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
266}
267
Lev Walkina9cc46e2004-09-22 16:06:28 +0000268asn_enc_rval_t
Lev Walkindfae9752004-09-29 13:19:37 +0000269T_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
Lev Walkina9cc46e2004-09-22 16:06:28 +0000270 int ilevel, enum xer_encoder_flags_e flags,
271 asn_app_consume_bytes_f *cb, void *app_key) {
Lev Walkine8318b82005-03-06 09:29:03 +0000272 T_1_inherit_TYPE_descriptor(td);
Lev Walkina9cc46e2004-09-22 16:06:28 +0000273 return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
Lev Walkin2e3055d2004-08-20 13:36:32 +0000274}
275
276
Lev Walkin5bbff1e2004-06-28 21:13:22 +0000277/*** <<< STAT-DEFS [T] >>> ***/
278
Lev Walkine8318b82005-03-06 09:29:03 +0000279static ber_tlv_tag_t asn_DEF_T_1_tags[] = {
Lev Walkin188ed2c2004-09-13 08:31:01 +0000280 (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
281 (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
Lev Walkin5bbff1e2004-06-28 21:13:22 +0000282};
Lev Walkindfae9752004-09-29 13:19:37 +0000283asn_TYPE_descriptor_t asn_DEF_T = {
Lev Walkin5bbff1e2004-06-28 21:13:22 +0000284 "T",
Lev Walkindc06f6b2004-10-20 15:50:55 +0000285 "T",
Lev Walkina9cc46e2004-09-22 16:06:28 +0000286 T_free,
287 T_print,
Lev Walkin5bbff1e2004-06-28 21:13:22 +0000288 T_constraint,
289 T_decode_ber,
290 T_encode_der,
Lev Walkin0ebe8b32004-10-23 13:26:56 +0000291 T_decode_xer,
Lev Walkina9cc46e2004-09-22 16:06:28 +0000292 T_encode_xer,
Lev Walkin5bbff1e2004-06-28 21:13:22 +0000293 0, /* Use generic outmost tag fetcher */
Lev Walkine8318b82005-03-06 09:29:03 +0000294 asn_DEF_T_1_tags,
295 sizeof(asn_DEF_T_1_tags)
296 /sizeof(asn_DEF_T_1_tags[0]) - 1, /* 1 */
297 asn_DEF_T_1_tags, /* Same as above */
298 sizeof(asn_DEF_T_1_tags)
299 /sizeof(asn_DEF_T_1_tags[0]), /* 2 */
Lev Walkin2e3055d2004-08-20 13:36:32 +0000300 0, 0, /* Defined elsewhere */
Lev Walkin5bbff1e2004-06-28 21:13:22 +0000301 0 /* No specifics */
302};
303