NativeEnumerated.c vars NULL init and check
[com/asn1c.git] / tests / tests-asn1c-compiler / 22-tags-OK.asn1.-Pfwide-types
1
2 /*** <<< INCLUDES [T1] >>> ***/
3
4 #include <INTEGER.h>
5 #include <UTF8String.h>
6 #include <IA5String.h>
7 #include <constr_CHOICE.h>
8 #include <constr_SEQUENCE.h>
9
10 /*** <<< DEPS [T1] >>> ***/
11
12 typedef enum b_PR {
13         b_PR_NOTHING,   /* No components present */
14         b_PR_i,
15         b_PR_n
16 } b_PR;
17
18 /*** <<< TYPE-DECLS [T1] >>> ***/
19
20 typedef struct T1 {
21         INTEGER_t        a;
22         struct b {
23                 b_PR present;
24                 union T1__b_u {
25                         INTEGER_t        i;
26                         IA5String_t      n;
27                 } choice;
28                 
29                 /* Context for parsing across buffer boundaries */
30                 asn_struct_ctx_t _asn_ctx;
31         } b;
32         UTF8String_t     c;
33         
34         /* Context for parsing across buffer boundaries */
35         asn_struct_ctx_t _asn_ctx;
36 } T1_t;
37
38 /*** <<< FUNC-DECLS [T1] >>> ***/
39
40 extern asn_TYPE_descriptor_t asn_DEF_T1;
41
42 /*** <<< STAT-DEFS [T1] >>> ***/
43
44 static asn_TYPE_member_t asn_MBR_b_3[] = {
45         { ATF_NOFLAGS, 0, offsetof(struct b, choice.i),
46                 .tag = (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
47                 .tag_mode = -1, /* IMPLICIT tag at current level */
48                 .type = &asn_DEF_INTEGER,
49                 .type_selector = 0,
50                 { .oer_constraints = 0, .per_constraints = 0, .general_constraints = 0 },
51                 0, 0, /* No default value */
52                 .name = "i"
53                 },
54         { ATF_NOFLAGS, 0, offsetof(struct b, choice.n),
55                 .tag = (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
56                 .tag_mode = -1, /* IMPLICIT tag at current level */
57                 .type = &asn_DEF_IA5String,
58                 .type_selector = 0,
59                 { .oer_constraints = 0, .per_constraints = 0, .general_constraints = 0 },
60                 0, 0, /* No default value */
61                 .name = "n"
62                 },
63 };
64 static const asn_TYPE_tag2member_t asn_MAP_b_tag2el_3[] = {
65     { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* i */
66     { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* n */
67 };
68 static asn_CHOICE_specifics_t asn_SPC_b_specs_3 = {
69         sizeof(struct b),
70         offsetof(struct b, _asn_ctx),
71         offsetof(struct b, present),
72         sizeof(((struct b *)0)->present),
73         .tag2el = asn_MAP_b_tag2el_3,
74         .tag2el_count = 2,      /* Count of tags in the map */
75         0, 0,
76         .first_extension = -1   /* Extensions start */
77 };
78 static /* Use -fall-defs-global to expose */
79 asn_TYPE_descriptor_t asn_DEF_b_3 = {
80         "b",
81         "b",
82         &asn_OP_CHOICE,
83         0,      /* No effective tags (pointer) */
84         0,      /* No effective tags (count) */
85         0,      /* No tags (pointer) */
86         0,      /* No tags (count) */
87         { 0, 0, CHOICE_constraint },
88         asn_MBR_b_3,
89         2,      /* Elements count */
90         &asn_SPC_b_specs_3      /* Additional specs */
91 };
92
93 static asn_TYPE_member_t asn_MBR_T1_1[] = {
94         { ATF_NOFLAGS, 0, offsetof(struct T1, a),
95                 .tag = (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
96                 .tag_mode = -1, /* IMPLICIT tag at current level */
97                 .type = &asn_DEF_INTEGER,
98                 .type_selector = 0,
99                 { .oer_constraints = 0, .per_constraints = 0, .general_constraints = 0 },
100                 0, 0, /* No default value */
101                 .name = "a"
102                 },
103         { ATF_NOFLAGS, 0, offsetof(struct T1, b),
104                 .tag = (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
105                 .tag_mode = +1, /* EXPLICIT tag at current level */
106                 .type = &asn_DEF_b_3,
107                 .type_selector = 0,
108                 { .oer_constraints = 0, .per_constraints = 0, .general_constraints = 0 },
109                 0, 0, /* No default value */
110                 .name = "b"
111                 },
112         { ATF_NOFLAGS, 0, offsetof(struct T1, c),
113                 .tag = (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
114                 .tag_mode = -1, /* IMPLICIT tag at current level */
115                 .type = &asn_DEF_UTF8String,
116                 .type_selector = 0,
117                 { .oer_constraints = 0, .per_constraints = 0, .general_constraints = 0 },
118                 0, 0, /* No default value */
119                 .name = "c"
120                 },
121 };
122 static const ber_tlv_tag_t asn_DEF_T1_tags_1[] = {
123         (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
124 };
125 static const asn_TYPE_tag2member_t asn_MAP_T1_tag2el_1[] = {
126     { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* a */
127     { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* b */
128     { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* c */
129 };
130 static asn_SEQUENCE_specifics_t asn_SPC_T1_specs_1 = {
131         sizeof(struct T1),
132         offsetof(struct T1, _asn_ctx),
133         .tag2el = asn_MAP_T1_tag2el_1,
134         .tag2el_count = 3,      /* Count of tags in the map */
135         0, 0, 0,        /* Optional elements (not needed) */
136         -1,     /* First extension addition */
137 };
138 asn_TYPE_descriptor_t asn_DEF_T1 = {
139         "T1",
140         "T1",
141         &asn_OP_SEQUENCE,
142         asn_DEF_T1_tags_1,
143         sizeof(asn_DEF_T1_tags_1)
144                 /sizeof(asn_DEF_T1_tags_1[0]), /* 1 */
145         asn_DEF_T1_tags_1,      /* Same as above */
146         sizeof(asn_DEF_T1_tags_1)
147                 /sizeof(asn_DEF_T1_tags_1[0]), /* 1 */
148         { 0, 0, SEQUENCE_constraint },
149         asn_MBR_T1_1,
150         3,      /* Elements count */
151         &asn_SPC_T1_specs_1     /* Additional specs */
152 };
153