blob: 2fd988c3a634f4d7c461833e4ce993fd0f404cee [file] [log] [blame]
Lev Walkin64d99e92005-01-30 18:34:07 +00001
2/*** <<< INCLUDES [T] >>> ***/
3
4#include <INTEGER.h>
5#include <OCTET_STRING.h>
6#include <REAL.h>
7#include <constr_SET.h>
8#include <constr_SEQUENCE.h>
9
10/*** <<< DEPS [T] >>> ***/
11
12
13/*
14 * Method of determining the components presence
15 */
16typedef enum class_PR {
17} class_PR;
Lev Walkin64d99e92005-01-30 18:34:07 +000018
19/*** <<< TYPE-DECLS [T] >>> ***/
20
Lev Walkin64d99e92005-01-30 18:34:07 +000021typedef struct T {
22 INTEGER_t Int;
23 OCTET_STRING_t Char;
24 struct Class {
25 /*
26 * This type is extensible,
27 * possible extensions are below.
28 */
29
30 /* Presence bitmask: ASN_SET_ISPRESENT(pclass, class_PR_x) */
31 unsigned int _presence_map
32 [((0+(8*sizeof(unsigned int))-1)/(8*sizeof(unsigned int)))];
33
34 /* Context for parsing across buffer boundaries */
35 asn_struct_ctx_t _asn_ctx;
36 } Class;
37 REAL_t Double;
38
39 /* Context for parsing across buffer boundaries */
40 asn_struct_ctx_t _asn_ctx;
41} T_t;
42
Lev Walkinc8285712005-03-04 22:18:20 +000043/*** <<< FUNC-DECLS [T] >>> ***/
44
45extern asn_TYPE_descriptor_t asn_DEF_T;
46
Lev Walkin64d99e92005-01-30 18:34:07 +000047/*** <<< CODE [T] >>> ***/
48
49static int
Lev Walkin59b176e2005-11-26 11:25:14 +000050memb_char_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
Lev Walkin1eded352006-07-13 11:19:01 +000051 asn_app_constraint_failed_f *ctfailcb, void *app_key) {
Lev Walkin8a7af0e2005-02-15 03:40:07 +000052 const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
Lev Walkin64d99e92005-01-30 18:34:07 +000053 size_t size;
54
55 if(!sptr) {
Lev Walkin7c1dc052016-03-14 03:08:15 -070056 ASN__CTFAIL(app_key, td, sptr,
Lev Walkin64d99e92005-01-30 18:34:07 +000057 "%s: value not given (%s:%d)",
58 td->name, __FILE__, __LINE__);
59 return -1;
60 }
61
62 size = st->size;
63
64 if((size == 1)) {
65 /* Constraint check succeeded */
66 return 0;
67 } else {
Lev Walkin7c1dc052016-03-14 03:08:15 -070068 ASN__CTFAIL(app_key, td, sptr,
Lev Walkin64d99e92005-01-30 18:34:07 +000069 "%s: constraint failed (%s:%d)",
70 td->name, __FILE__, __LINE__);
71 return -1;
72 }
73}
74
75
76/*** <<< STAT-DEFS [T] >>> ***/
77
Lev Walkina7591b52014-10-12 18:37:35 -070078static const ber_tlv_tag_t asn_DEF_class_tags_4[] = {
Lev Walkin64d99e92005-01-30 18:34:07 +000079 (ASN_TAG_CLASS_UNIVERSAL | (17 << 2))
80};
Lev Walkina7591b52014-10-12 18:37:35 -070081static const uint8_t asn_MAP_class_mmap_4[(0 + (8 * sizeof(unsigned int)) - 1) / 8] = {
Lev Walkin64d99e92005-01-30 18:34:07 +000082 0
83};
Bi-Ruei, Chiu1fa31c92016-05-16 13:50:09 +080084static
85asn_SET_specifics_t asn_SPC_class_specs_4 = {
Lev Walkin64d99e92005-01-30 18:34:07 +000086 sizeof(struct Class),
87 offsetof(struct Class, _asn_ctx),
88 offsetof(struct Class, _presence_map),
Lev Walkine3917082017-08-23 10:29:38 -070089 0, /* No top level tags */
90 0, /* No tags in the map */
Lev Walkin59b176e2005-11-26 11:25:14 +000091 asn_MAP_class_tag2el_4, /* Same as above */
Lev Walkinf82138b2005-02-25 08:20:32 +000092 0, /* Count of tags in the CXER map */
Lev Walkin64d99e92005-01-30 18:34:07 +000093 1, /* Whether extensible */
Lev Walkin46ef3f32017-07-06 08:47:53 -070094 (const unsigned int *)asn_MAP_class_mmap_4 /* Mandatory elements map */
Lev Walkin64d99e92005-01-30 18:34:07 +000095};
96static /* Use -fall-defs-global to expose */
Lev Walkine8318b82005-03-06 09:29:03 +000097asn_TYPE_descriptor_t asn_DEF_class_4 = {
Lev Walkin64d99e92005-01-30 18:34:07 +000098 "class",
99 "class",
100 SET_free,
101 SET_print,
Lev Walkincd2f48e2017-08-10 02:14:59 -0700102 SET_compare,
Lev Walkin64d99e92005-01-30 18:34:07 +0000103 SET_constraint,
104 SET_decode_ber,
105 SET_encode_der,
Lev Walkinb2230802005-02-14 20:31:31 +0000106 SET_decode_xer,
Lev Walkin64d99e92005-01-30 18:34:07 +0000107 SET_encode_xer,
Lev Walkinba68c912017-07-06 07:52:39 -0700108 0, 0, /* No OER support, use "-gen-OER" to enable */
Lev Walkinb33425f2017-07-14 14:59:52 +0400109 0, 0, /* No PER support, use "-gen-PER" to enable */
Lev Walkin64d99e92005-01-30 18:34:07 +0000110 0, /* Use generic outmost tag fetcher */
Lev Walkin59b176e2005-11-26 11:25:14 +0000111 asn_DEF_class_tags_4,
112 sizeof(asn_DEF_class_tags_4)
113 /sizeof(asn_DEF_class_tags_4[0]), /* 1 */
114 asn_DEF_class_tags_4, /* Same as above */
115 sizeof(asn_DEF_class_tags_4)
116 /sizeof(asn_DEF_class_tags_4[0]), /* 1 */
Lev Walkinb33425f2017-07-14 14:59:52 +0400117 0, /* No OER visible constraints */
Lev Walkin59b176e2005-11-26 11:25:14 +0000118 0, /* No PER visible constraints */
Lev Walkin64d99e92005-01-30 18:34:07 +0000119 0, 0, /* No members */
Lev Walkin59b176e2005-11-26 11:25:14 +0000120 &asn_SPC_class_specs_4 /* Additional specs */
Lev Walkin64d99e92005-01-30 18:34:07 +0000121};
122
Lev Walkine0272aa2005-03-04 11:26:08 +0000123static asn_TYPE_member_t asn_MBR_T_1[] = {
Lev Walkin64d99e92005-01-30 18:34:07 +0000124 { ATF_NOFLAGS, 0, offsetof(struct T, Int),
125 .tag = (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
126 .tag_mode = 0,
Lev Walkinae7bf3f2005-08-29 10:31:14 +0000127 .type = &asn_DEF_INTEGER,
Lev Walkin67a30122017-08-10 05:48:54 -0700128 .type_selector = 0,
Lev Walkin64d99e92005-01-30 18:34:07 +0000129 .memb_constraints = 0, /* Defer constraints checking to the member type */
Lev Walkinb33425f2017-07-14 14:59:52 +0400130 .oer_constraints = 0, /* OER is not compiled, use -gen-OER */
Lev Walkin59b176e2005-11-26 11:25:14 +0000131 .per_constraints = 0, /* PER is not compiled, use -gen-PER */
132 .default_value = 0,
Lev Walkin64d99e92005-01-30 18:34:07 +0000133 .name = "int"
134 },
135 { ATF_NOFLAGS, 0, offsetof(struct T, Char),
136 .tag = (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)),
137 .tag_mode = 0,
Lev Walkinae7bf3f2005-08-29 10:31:14 +0000138 .type = &asn_DEF_OCTET_STRING,
Lev Walkin67a30122017-08-10 05:48:54 -0700139 .type_selector = 0,
Lev Walkin59b176e2005-11-26 11:25:14 +0000140 .memb_constraints = memb_char_constraint_1,
Lev Walkinb33425f2017-07-14 14:59:52 +0400141 .oer_constraints = 0, /* OER is not compiled, use -gen-OER */
Lev Walkin59b176e2005-11-26 11:25:14 +0000142 .per_constraints = 0, /* PER is not compiled, use -gen-PER */
143 .default_value = 0,
Lev Walkin64d99e92005-01-30 18:34:07 +0000144 .name = "char"
145 },
146 { ATF_NOFLAGS, 0, offsetof(struct T, Class),
147 .tag = (ASN_TAG_CLASS_UNIVERSAL | (17 << 2)),
148 .tag_mode = 0,
Lev Walkinae7bf3f2005-08-29 10:31:14 +0000149 .type = &asn_DEF_class_4,
Lev Walkin67a30122017-08-10 05:48:54 -0700150 .type_selector = 0,
Lev Walkin64d99e92005-01-30 18:34:07 +0000151 .memb_constraints = 0, /* Defer constraints checking to the member type */
Lev Walkinb33425f2017-07-14 14:59:52 +0400152 .oer_constraints = 0, /* OER is not compiled, use -gen-OER */
Lev Walkin59b176e2005-11-26 11:25:14 +0000153 .per_constraints = 0, /* PER is not compiled, use -gen-PER */
154 .default_value = 0,
Lev Walkin64d99e92005-01-30 18:34:07 +0000155 .name = "class"
156 },
157 { ATF_NOFLAGS, 0, offsetof(struct T, Double),
158 .tag = (ASN_TAG_CLASS_UNIVERSAL | (9 << 2)),
159 .tag_mode = 0,
Lev Walkinae7bf3f2005-08-29 10:31:14 +0000160 .type = &asn_DEF_REAL,
Lev Walkin67a30122017-08-10 05:48:54 -0700161 .type_selector = 0,
Lev Walkin64d99e92005-01-30 18:34:07 +0000162 .memb_constraints = 0, /* Defer constraints checking to the member type */
Lev Walkinb33425f2017-07-14 14:59:52 +0400163 .oer_constraints = 0, /* OER is not compiled, use -gen-OER */
Lev Walkin59b176e2005-11-26 11:25:14 +0000164 .per_constraints = 0, /* PER is not compiled, use -gen-PER */
165 .default_value = 0,
Lev Walkin64d99e92005-01-30 18:34:07 +0000166 .name = "double"
167 },
168};
Lev Walkina7591b52014-10-12 18:37:35 -0700169static const ber_tlv_tag_t asn_DEF_T_tags_1[] = {
Lev Walkin64d99e92005-01-30 18:34:07 +0000170 (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
171};
Lev Walkina7591b52014-10-12 18:37:35 -0700172static const asn_TYPE_tag2member_t asn_MAP_T_tag2el_1[] = {
Lev Walkin4062b012013-10-11 14:29:38 -0700173 { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* int */
174 { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 1, 0, 0 }, /* char */
175 { (ASN_TAG_CLASS_UNIVERSAL | (9 << 2)), 3, 0, 0 }, /* double */
176 { (ASN_TAG_CLASS_UNIVERSAL | (17 << 2)), 2, 0, 0 } /* class */
Lev Walkin64d99e92005-01-30 18:34:07 +0000177};
Lev Walkin59b176e2005-11-26 11:25:14 +0000178static asn_SEQUENCE_specifics_t asn_SPC_T_specs_1 = {
Lev Walkin64d99e92005-01-30 18:34:07 +0000179 sizeof(struct T),
180 offsetof(struct T, _asn_ctx),
Lev Walkine3917082017-08-23 10:29:38 -0700181 .tag2el = asn_MAP_T_tag2el_1,
182 .tag2el_count = 4, /* Count of tags in the map */
Lev Walkin59b176e2005-11-26 11:25:14 +0000183 0, 0, 0, /* Optional elements (not needed) */
Lev Walkin64d99e92005-01-30 18:34:07 +0000184 -1, /* Start extensions */
185 -1 /* Stop extensions */
186};
187asn_TYPE_descriptor_t asn_DEF_T = {
188 "T",
189 "T",
190 SEQUENCE_free,
191 SEQUENCE_print,
Lev Walkincd2f48e2017-08-10 02:14:59 -0700192 SEQUENCE_compare,
Lev Walkin64d99e92005-01-30 18:34:07 +0000193 SEQUENCE_constraint,
194 SEQUENCE_decode_ber,
195 SEQUENCE_encode_der,
196 SEQUENCE_decode_xer,
197 SEQUENCE_encode_xer,
Lev Walkinba68c912017-07-06 07:52:39 -0700198 0, 0, /* No OER support, use "-gen-OER" to enable */
Lev Walkinb33425f2017-07-14 14:59:52 +0400199 0, 0, /* No PER support, use "-gen-PER" to enable */
Lev Walkin64d99e92005-01-30 18:34:07 +0000200 0, /* Use generic outmost tag fetcher */
Lev Walkin59b176e2005-11-26 11:25:14 +0000201 asn_DEF_T_tags_1,
202 sizeof(asn_DEF_T_tags_1)
203 /sizeof(asn_DEF_T_tags_1[0]), /* 1 */
204 asn_DEF_T_tags_1, /* Same as above */
205 sizeof(asn_DEF_T_tags_1)
206 /sizeof(asn_DEF_T_tags_1[0]), /* 1 */
Lev Walkinb33425f2017-07-14 14:59:52 +0400207 0, /* No OER visible constraints */
Lev Walkin59b176e2005-11-26 11:25:14 +0000208 0, /* No PER visible constraints */
Lev Walkine0272aa2005-03-04 11:26:08 +0000209 asn_MBR_T_1,
Lev Walkin64d99e92005-01-30 18:34:07 +0000210 4, /* Elements count */
Lev Walkin59b176e2005-11-26 11:25:14 +0000211 &asn_SPC_T_specs_1 /* Additional specs */
Lev Walkin64d99e92005-01-30 18:34:07 +0000212};
213