Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 1 | |
| 2 | /*** <<< INCLUDES [T1] >>> ***/ |
| 3 | |
Lev Walkin | 22b5ed4 | 2006-09-13 02:51:20 +0000 | [diff] [blame] | 4 | #include "T2.h" |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 5 | |
| 6 | /*** <<< TYPE-DECLS [T1] >>> ***/ |
| 7 | |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 8 | typedef T2_t T1_t; |
| 9 | |
| 10 | /*** <<< FUNC-DECLS [T1] >>> ***/ |
| 11 | |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 12 | extern asn_TYPE_descriptor_t asn_DEF_T1; |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 13 | asn_struct_free_f T1_free; |
| 14 | asn_struct_print_f T1_print; |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 15 | asn_constr_check_f T1_constraint; |
| 16 | ber_type_decoder_f T1_decode_ber; |
| 17 | der_type_encoder_f T1_encode_der; |
Lev Walkin | 0ebe8b3 | 2004-10-23 13:26:56 +0000 | [diff] [blame] | 18 | xer_type_decoder_f T1_decode_xer; |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 19 | xer_type_encoder_f T1_encode_xer; |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 20 | |
| 21 | /*** <<< CODE [T1] >>> ***/ |
| 22 | |
| 23 | int |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 24 | T1_constraint(asn_TYPE_descriptor_t *td, const void *sptr, |
Lev Walkin | 1eded35 | 2006-07-13 11:19:01 +0000 | [diff] [blame] | 25 | asn_app_constraint_failed_f *ctfailcb, void *app_key) { |
Lev Walkin | 154aa18 | 2004-09-26 13:12:56 +0000 | [diff] [blame] | 26 | /* Replace with underlying type checker */ |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 27 | td->check_constraints = asn_DEF_T2.check_constraints; |
Lev Walkin | 1eded35 | 2006-07-13 11:19:01 +0000 | [diff] [blame] | 28 | return td->check_constraints(td, sptr, ctfailcb, app_key); |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 29 | } |
| 30 | |
| 31 | /* |
| 32 | * This type is implemented using T2, |
Lev Walkin | c3808c1 | 2004-09-23 22:14:58 +0000 | [diff] [blame] | 33 | * so here we adjust the DEF accordingly. |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 34 | */ |
| 35 | static void |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 36 | T1_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 37 | td->free_struct = asn_DEF_T2.free_struct; |
| 38 | td->print_struct = asn_DEF_T2.print_struct; |
Lev Walkin | 6169b8d | 2013-12-07 11:02:44 -0800 | [diff] [blame] | 39 | td->check_constraints = asn_DEF_T2.check_constraints; |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 40 | td->ber_decoder = asn_DEF_T2.ber_decoder; |
| 41 | td->der_encoder = asn_DEF_T2.der_encoder; |
| 42 | td->xer_decoder = asn_DEF_T2.xer_decoder; |
| 43 | td->xer_encoder = asn_DEF_T2.xer_encoder; |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 44 | td->uper_decoder = asn_DEF_T2.uper_decoder; |
Lev Walkin | 9f5bb3a | 2006-08-18 01:46:46 +0000 | [diff] [blame] | 45 | td->uper_encoder = asn_DEF_T2.uper_encoder; |
Lev Walkin | ba68c91 | 2017-07-06 07:52:39 -0700 | [diff] [blame] | 46 | td->oer_decoder = asn_DEF_T2.oer_decoder; |
| 47 | td->oer_encoder = asn_DEF_T2.oer_encoder; |
Lev Walkin | b33425f | 2017-07-14 14:59:52 +0400 | [diff] [blame] | 48 | if(!td->oer_constraints) |
| 49 | td->oer_constraints = asn_DEF_T2.oer_constraints; |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 50 | if(!td->per_constraints) |
| 51 | td->per_constraints = asn_DEF_T2.per_constraints; |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 52 | td->elements = asn_DEF_T2.elements; |
| 53 | td->elements_count = asn_DEF_T2.elements_count; |
| 54 | td->specifics = asn_DEF_T2.specifics; |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 55 | } |
| 56 | |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 57 | void |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 58 | T1_free(asn_TYPE_descriptor_t *td, |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 59 | void *struct_ptr, int contents_only) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 60 | T1_1_inherit_TYPE_descriptor(td); |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 61 | td->free_struct(td, struct_ptr, contents_only); |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 62 | } |
| 63 | |
| 64 | int |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 65 | T1_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 66 | int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 67 | T1_1_inherit_TYPE_descriptor(td); |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 68 | return td->print_struct(td, struct_ptr, ilevel, cb, app_key); |
| 69 | } |
| 70 | |
Lev Walkin | dc06f6b | 2004-10-20 15:50:55 +0000 | [diff] [blame] | 71 | asn_dec_rval_t |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 72 | T1_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, |
Lev Walkin | 3ebc65a | 2005-03-17 21:57:19 +0000 | [diff] [blame] | 73 | void **structure, const void *bufptr, size_t size, int tag_mode) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 74 | T1_1_inherit_TYPE_descriptor(td); |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 75 | return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 76 | } |
| 77 | |
| 78 | asn_enc_rval_t |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 79 | T1_encode_der(asn_TYPE_descriptor_t *td, |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 80 | void *structure, int tag_mode, ber_tlv_tag_t tag, |
| 81 | asn_app_consume_bytes_f *cb, void *app_key) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 82 | T1_1_inherit_TYPE_descriptor(td); |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 83 | return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); |
| 84 | } |
| 85 | |
Lev Walkin | 0ebe8b3 | 2004-10-23 13:26:56 +0000 | [diff] [blame] | 86 | asn_dec_rval_t |
| 87 | T1_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, |
Lev Walkin | 3ebc65a | 2005-03-17 21:57:19 +0000 | [diff] [blame] | 88 | void **structure, const char *opt_mname, const void *bufptr, size_t size) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 89 | T1_1_inherit_TYPE_descriptor(td); |
Lev Walkin | 0ebe8b3 | 2004-10-23 13:26:56 +0000 | [diff] [blame] | 90 | return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); |
| 91 | } |
| 92 | |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 93 | asn_enc_rval_t |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 94 | T1_encode_xer(asn_TYPE_descriptor_t *td, void *structure, |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 95 | int ilevel, enum xer_encoder_flags_e flags, |
| 96 | asn_app_consume_bytes_f *cb, void *app_key) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 97 | T1_1_inherit_TYPE_descriptor(td); |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 98 | return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 99 | } |
| 100 | |
| 101 | |
| 102 | /*** <<< STAT-DEFS [T1] >>> ***/ |
| 103 | |
Lev Walkin | a7591b5 | 2014-10-12 18:37:35 -0700 | [diff] [blame] | 104 | static const ber_tlv_tag_t asn_DEF_T1_tags_1[] = { |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 105 | (ASN_TAG_CLASS_CONTEXT | (2 << 2)), |
| 106 | (ASN_TAG_CLASS_CONTEXT | (3 << 2)), |
| 107 | (ASN_TAG_CLASS_CONTEXT | (4 << 2)), |
| 108 | (ASN_TAG_CLASS_CONTEXT | (6 << 2)) |
| 109 | }; |
Lev Walkin | a7591b5 | 2014-10-12 18:37:35 -0700 | [diff] [blame] | 110 | static const ber_tlv_tag_t asn_DEF_T1_all_tags_1[] = { |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 111 | (ASN_TAG_CLASS_CONTEXT | (2 << 2)), |
| 112 | (ASN_TAG_CLASS_CONTEXT | (3 << 2)), |
| 113 | (ASN_TAG_CLASS_CONTEXT | (4 << 2)), |
| 114 | (ASN_TAG_CLASS_CONTEXT | (5 << 2)), |
| 115 | (ASN_TAG_CLASS_CONTEXT | (6 << 2)), |
| 116 | (ASN_TAG_CLASS_UNIVERSAL | (9 << 2)) |
| 117 | }; |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 118 | asn_TYPE_descriptor_t asn_DEF_T1 = { |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 119 | "T1", |
Lev Walkin | dc06f6b | 2004-10-20 15:50:55 +0000 | [diff] [blame] | 120 | "T1", |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 121 | T1_free, |
| 122 | T1_print, |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 123 | T1_constraint, |
| 124 | T1_decode_ber, |
| 125 | T1_encode_der, |
Lev Walkin | 0ebe8b3 | 2004-10-23 13:26:56 +0000 | [diff] [blame] | 126 | T1_decode_xer, |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 127 | T1_encode_xer, |
Lev Walkin | ba68c91 | 2017-07-06 07:52:39 -0700 | [diff] [blame] | 128 | 0, 0, /* No OER support, use "-gen-OER" to enable */ |
Lev Walkin | b33425f | 2017-07-14 14:59:52 +0400 | [diff] [blame] | 129 | 0, 0, /* No PER support, use "-gen-PER" to enable */ |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 130 | 0, /* Use generic outmost tag fetcher */ |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 131 | asn_DEF_T1_tags_1, |
| 132 | sizeof(asn_DEF_T1_tags_1) |
| 133 | /sizeof(asn_DEF_T1_tags_1[0]), /* 4 */ |
| 134 | asn_DEF_T1_all_tags_1, |
| 135 | sizeof(asn_DEF_T1_all_tags_1) |
| 136 | /sizeof(asn_DEF_T1_all_tags_1[0]), /* 6 */ |
Lev Walkin | b33425f | 2017-07-14 14:59:52 +0400 | [diff] [blame] | 137 | 0, /* No OER visible constraints */ |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 138 | 0, /* No PER visible constraints */ |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 139 | 0, 0, /* No members */ |
| 140 | 0 /* No specifics */ |
| 141 | }; |
| 142 | |
| 143 | |
| 144 | /*** <<< INCLUDES [T2] >>> ***/ |
| 145 | |
Lev Walkin | 22b5ed4 | 2006-09-13 02:51:20 +0000 | [diff] [blame] | 146 | #include "T3.h" |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 147 | |
| 148 | /*** <<< TYPE-DECLS [T2] >>> ***/ |
| 149 | |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 150 | typedef T3_t T2_t; |
| 151 | |
| 152 | /*** <<< FUNC-DECLS [T2] >>> ***/ |
| 153 | |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 154 | extern asn_TYPE_descriptor_t asn_DEF_T2; |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 155 | asn_struct_free_f T2_free; |
| 156 | asn_struct_print_f T2_print; |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 157 | asn_constr_check_f T2_constraint; |
| 158 | ber_type_decoder_f T2_decode_ber; |
| 159 | der_type_encoder_f T2_encode_der; |
Lev Walkin | 0ebe8b3 | 2004-10-23 13:26:56 +0000 | [diff] [blame] | 160 | xer_type_decoder_f T2_decode_xer; |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 161 | xer_type_encoder_f T2_encode_xer; |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 162 | |
| 163 | /*** <<< CODE [T2] >>> ***/ |
| 164 | |
| 165 | int |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 166 | T2_constraint(asn_TYPE_descriptor_t *td, const void *sptr, |
Lev Walkin | 1eded35 | 2006-07-13 11:19:01 +0000 | [diff] [blame] | 167 | asn_app_constraint_failed_f *ctfailcb, void *app_key) { |
Lev Walkin | 154aa18 | 2004-09-26 13:12:56 +0000 | [diff] [blame] | 168 | /* Replace with underlying type checker */ |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 169 | td->check_constraints = asn_DEF_T3.check_constraints; |
Lev Walkin | 1eded35 | 2006-07-13 11:19:01 +0000 | [diff] [blame] | 170 | return td->check_constraints(td, sptr, ctfailcb, app_key); |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 171 | } |
| 172 | |
| 173 | /* |
| 174 | * This type is implemented using T3, |
Lev Walkin | c3808c1 | 2004-09-23 22:14:58 +0000 | [diff] [blame] | 175 | * so here we adjust the DEF accordingly. |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 176 | */ |
| 177 | static void |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 178 | T2_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 179 | td->free_struct = asn_DEF_T3.free_struct; |
| 180 | td->print_struct = asn_DEF_T3.print_struct; |
Lev Walkin | 6169b8d | 2013-12-07 11:02:44 -0800 | [diff] [blame] | 181 | td->check_constraints = asn_DEF_T3.check_constraints; |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 182 | td->ber_decoder = asn_DEF_T3.ber_decoder; |
| 183 | td->der_encoder = asn_DEF_T3.der_encoder; |
| 184 | td->xer_decoder = asn_DEF_T3.xer_decoder; |
| 185 | td->xer_encoder = asn_DEF_T3.xer_encoder; |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 186 | td->uper_decoder = asn_DEF_T3.uper_decoder; |
Lev Walkin | 9f5bb3a | 2006-08-18 01:46:46 +0000 | [diff] [blame] | 187 | td->uper_encoder = asn_DEF_T3.uper_encoder; |
Lev Walkin | ba68c91 | 2017-07-06 07:52:39 -0700 | [diff] [blame] | 188 | td->oer_decoder = asn_DEF_T3.oer_decoder; |
| 189 | td->oer_encoder = asn_DEF_T3.oer_encoder; |
Lev Walkin | b33425f | 2017-07-14 14:59:52 +0400 | [diff] [blame] | 190 | if(!td->oer_constraints) |
| 191 | td->oer_constraints = asn_DEF_T3.oer_constraints; |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 192 | if(!td->per_constraints) |
| 193 | td->per_constraints = asn_DEF_T3.per_constraints; |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 194 | td->elements = asn_DEF_T3.elements; |
| 195 | td->elements_count = asn_DEF_T3.elements_count; |
| 196 | td->specifics = asn_DEF_T3.specifics; |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 197 | } |
| 198 | |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 199 | void |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 200 | T2_free(asn_TYPE_descriptor_t *td, |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 201 | void *struct_ptr, int contents_only) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 202 | T2_1_inherit_TYPE_descriptor(td); |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 203 | td->free_struct(td, struct_ptr, contents_only); |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 204 | } |
| 205 | |
| 206 | int |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 207 | T2_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 208 | int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 209 | T2_1_inherit_TYPE_descriptor(td); |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 210 | return td->print_struct(td, struct_ptr, ilevel, cb, app_key); |
| 211 | } |
| 212 | |
Lev Walkin | dc06f6b | 2004-10-20 15:50:55 +0000 | [diff] [blame] | 213 | asn_dec_rval_t |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 214 | T2_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, |
Lev Walkin | 3ebc65a | 2005-03-17 21:57:19 +0000 | [diff] [blame] | 215 | void **structure, const void *bufptr, size_t size, int tag_mode) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 216 | T2_1_inherit_TYPE_descriptor(td); |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 217 | return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 218 | } |
| 219 | |
| 220 | asn_enc_rval_t |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 221 | T2_encode_der(asn_TYPE_descriptor_t *td, |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 222 | void *structure, int tag_mode, ber_tlv_tag_t tag, |
| 223 | asn_app_consume_bytes_f *cb, void *app_key) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 224 | T2_1_inherit_TYPE_descriptor(td); |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 225 | return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); |
| 226 | } |
| 227 | |
Lev Walkin | 0ebe8b3 | 2004-10-23 13:26:56 +0000 | [diff] [blame] | 228 | asn_dec_rval_t |
| 229 | T2_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, |
Lev Walkin | 3ebc65a | 2005-03-17 21:57:19 +0000 | [diff] [blame] | 230 | void **structure, const char *opt_mname, const void *bufptr, size_t size) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 231 | T2_1_inherit_TYPE_descriptor(td); |
Lev Walkin | 0ebe8b3 | 2004-10-23 13:26:56 +0000 | [diff] [blame] | 232 | return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); |
| 233 | } |
| 234 | |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 235 | asn_enc_rval_t |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 236 | T2_encode_xer(asn_TYPE_descriptor_t *td, void *structure, |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 237 | int ilevel, enum xer_encoder_flags_e flags, |
| 238 | asn_app_consume_bytes_f *cb, void *app_key) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 239 | T2_1_inherit_TYPE_descriptor(td); |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 240 | return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 241 | } |
| 242 | |
| 243 | |
| 244 | /*** <<< STAT-DEFS [T2] >>> ***/ |
| 245 | |
Lev Walkin | a7591b5 | 2014-10-12 18:37:35 -0700 | [diff] [blame] | 246 | static const ber_tlv_tag_t asn_DEF_T2_tags_1[] = { |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 247 | (ASN_TAG_CLASS_CONTEXT | (3 << 2)), |
| 248 | (ASN_TAG_CLASS_CONTEXT | (4 << 2)), |
| 249 | (ASN_TAG_CLASS_CONTEXT | (6 << 2)) |
| 250 | }; |
Lev Walkin | a7591b5 | 2014-10-12 18:37:35 -0700 | [diff] [blame] | 251 | static const ber_tlv_tag_t asn_DEF_T2_all_tags_1[] = { |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 252 | (ASN_TAG_CLASS_CONTEXT | (3 << 2)), |
| 253 | (ASN_TAG_CLASS_CONTEXT | (4 << 2)), |
| 254 | (ASN_TAG_CLASS_CONTEXT | (5 << 2)), |
| 255 | (ASN_TAG_CLASS_CONTEXT | (6 << 2)), |
| 256 | (ASN_TAG_CLASS_UNIVERSAL | (9 << 2)) |
| 257 | }; |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 258 | asn_TYPE_descriptor_t asn_DEF_T2 = { |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 259 | "T2", |
Lev Walkin | dc06f6b | 2004-10-20 15:50:55 +0000 | [diff] [blame] | 260 | "T2", |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 261 | T2_free, |
| 262 | T2_print, |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 263 | T2_constraint, |
| 264 | T2_decode_ber, |
| 265 | T2_encode_der, |
Lev Walkin | 0ebe8b3 | 2004-10-23 13:26:56 +0000 | [diff] [blame] | 266 | T2_decode_xer, |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 267 | T2_encode_xer, |
Lev Walkin | ba68c91 | 2017-07-06 07:52:39 -0700 | [diff] [blame] | 268 | 0, 0, /* No OER support, use "-gen-OER" to enable */ |
Lev Walkin | b33425f | 2017-07-14 14:59:52 +0400 | [diff] [blame] | 269 | 0, 0, /* No PER support, use "-gen-PER" to enable */ |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 270 | 0, /* Use generic outmost tag fetcher */ |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 271 | asn_DEF_T2_tags_1, |
| 272 | sizeof(asn_DEF_T2_tags_1) |
| 273 | /sizeof(asn_DEF_T2_tags_1[0]), /* 3 */ |
| 274 | asn_DEF_T2_all_tags_1, |
| 275 | sizeof(asn_DEF_T2_all_tags_1) |
| 276 | /sizeof(asn_DEF_T2_all_tags_1[0]), /* 5 */ |
Lev Walkin | b33425f | 2017-07-14 14:59:52 +0400 | [diff] [blame] | 277 | 0, /* No OER visible constraints */ |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 278 | 0, /* No PER visible constraints */ |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 279 | 0, 0, /* No members */ |
| 280 | 0 /* No specifics */ |
| 281 | }; |
| 282 | |
| 283 | |
| 284 | /*** <<< INCLUDES [T3] >>> ***/ |
| 285 | |
Lev Walkin | 22b5ed4 | 2006-09-13 02:51:20 +0000 | [diff] [blame] | 286 | #include "T4.h" |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 287 | |
| 288 | /*** <<< TYPE-DECLS [T3] >>> ***/ |
| 289 | |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 290 | typedef T4_t T3_t; |
| 291 | |
| 292 | /*** <<< FUNC-DECLS [T3] >>> ***/ |
| 293 | |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 294 | extern asn_TYPE_descriptor_t asn_DEF_T3; |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 295 | asn_struct_free_f T3_free; |
| 296 | asn_struct_print_f T3_print; |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 297 | asn_constr_check_f T3_constraint; |
| 298 | ber_type_decoder_f T3_decode_ber; |
| 299 | der_type_encoder_f T3_encode_der; |
Lev Walkin | 0ebe8b3 | 2004-10-23 13:26:56 +0000 | [diff] [blame] | 300 | xer_type_decoder_f T3_decode_xer; |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 301 | xer_type_encoder_f T3_encode_xer; |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 302 | |
| 303 | /*** <<< CODE [T3] >>> ***/ |
| 304 | |
| 305 | int |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 306 | T3_constraint(asn_TYPE_descriptor_t *td, const void *sptr, |
Lev Walkin | 1eded35 | 2006-07-13 11:19:01 +0000 | [diff] [blame] | 307 | asn_app_constraint_failed_f *ctfailcb, void *app_key) { |
Lev Walkin | 154aa18 | 2004-09-26 13:12:56 +0000 | [diff] [blame] | 308 | /* Replace with underlying type checker */ |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 309 | td->check_constraints = asn_DEF_T4.check_constraints; |
Lev Walkin | 1eded35 | 2006-07-13 11:19:01 +0000 | [diff] [blame] | 310 | return td->check_constraints(td, sptr, ctfailcb, app_key); |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 311 | } |
| 312 | |
| 313 | /* |
| 314 | * This type is implemented using T4, |
Lev Walkin | c3808c1 | 2004-09-23 22:14:58 +0000 | [diff] [blame] | 315 | * so here we adjust the DEF accordingly. |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 316 | */ |
| 317 | static void |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 318 | T3_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 319 | td->free_struct = asn_DEF_T4.free_struct; |
| 320 | td->print_struct = asn_DEF_T4.print_struct; |
Lev Walkin | 6169b8d | 2013-12-07 11:02:44 -0800 | [diff] [blame] | 321 | td->check_constraints = asn_DEF_T4.check_constraints; |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 322 | td->ber_decoder = asn_DEF_T4.ber_decoder; |
| 323 | td->der_encoder = asn_DEF_T4.der_encoder; |
| 324 | td->xer_decoder = asn_DEF_T4.xer_decoder; |
| 325 | td->xer_encoder = asn_DEF_T4.xer_encoder; |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 326 | td->uper_decoder = asn_DEF_T4.uper_decoder; |
Lev Walkin | 9f5bb3a | 2006-08-18 01:46:46 +0000 | [diff] [blame] | 327 | td->uper_encoder = asn_DEF_T4.uper_encoder; |
Lev Walkin | ba68c91 | 2017-07-06 07:52:39 -0700 | [diff] [blame] | 328 | td->oer_decoder = asn_DEF_T4.oer_decoder; |
| 329 | td->oer_encoder = asn_DEF_T4.oer_encoder; |
Lev Walkin | b33425f | 2017-07-14 14:59:52 +0400 | [diff] [blame] | 330 | if(!td->oer_constraints) |
| 331 | td->oer_constraints = asn_DEF_T4.oer_constraints; |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 332 | if(!td->per_constraints) |
| 333 | td->per_constraints = asn_DEF_T4.per_constraints; |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 334 | td->elements = asn_DEF_T4.elements; |
| 335 | td->elements_count = asn_DEF_T4.elements_count; |
| 336 | td->specifics = asn_DEF_T4.specifics; |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 337 | } |
| 338 | |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 339 | void |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 340 | T3_free(asn_TYPE_descriptor_t *td, |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 341 | void *struct_ptr, int contents_only) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 342 | T3_1_inherit_TYPE_descriptor(td); |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 343 | td->free_struct(td, struct_ptr, contents_only); |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 344 | } |
| 345 | |
| 346 | int |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 347 | T3_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 348 | int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 349 | T3_1_inherit_TYPE_descriptor(td); |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 350 | return td->print_struct(td, struct_ptr, ilevel, cb, app_key); |
| 351 | } |
| 352 | |
Lev Walkin | dc06f6b | 2004-10-20 15:50:55 +0000 | [diff] [blame] | 353 | asn_dec_rval_t |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 354 | T3_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, |
Lev Walkin | 3ebc65a | 2005-03-17 21:57:19 +0000 | [diff] [blame] | 355 | void **structure, const void *bufptr, size_t size, int tag_mode) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 356 | T3_1_inherit_TYPE_descriptor(td); |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 357 | return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 358 | } |
| 359 | |
| 360 | asn_enc_rval_t |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 361 | T3_encode_der(asn_TYPE_descriptor_t *td, |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 362 | void *structure, int tag_mode, ber_tlv_tag_t tag, |
| 363 | asn_app_consume_bytes_f *cb, void *app_key) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 364 | T3_1_inherit_TYPE_descriptor(td); |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 365 | return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); |
| 366 | } |
| 367 | |
Lev Walkin | 0ebe8b3 | 2004-10-23 13:26:56 +0000 | [diff] [blame] | 368 | asn_dec_rval_t |
| 369 | T3_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, |
Lev Walkin | 3ebc65a | 2005-03-17 21:57:19 +0000 | [diff] [blame] | 370 | void **structure, const char *opt_mname, const void *bufptr, size_t size) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 371 | T3_1_inherit_TYPE_descriptor(td); |
Lev Walkin | 0ebe8b3 | 2004-10-23 13:26:56 +0000 | [diff] [blame] | 372 | return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); |
| 373 | } |
| 374 | |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 375 | asn_enc_rval_t |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 376 | T3_encode_xer(asn_TYPE_descriptor_t *td, void *structure, |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 377 | int ilevel, enum xer_encoder_flags_e flags, |
| 378 | asn_app_consume_bytes_f *cb, void *app_key) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 379 | T3_1_inherit_TYPE_descriptor(td); |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 380 | return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 381 | } |
| 382 | |
| 383 | |
| 384 | /*** <<< STAT-DEFS [T3] >>> ***/ |
| 385 | |
Lev Walkin | a7591b5 | 2014-10-12 18:37:35 -0700 | [diff] [blame] | 386 | static const ber_tlv_tag_t asn_DEF_T3_tags_1[] = { |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 387 | (ASN_TAG_CLASS_CONTEXT | (4 << 2)), |
| 388 | (ASN_TAG_CLASS_CONTEXT | (6 << 2)) |
| 389 | }; |
Lev Walkin | a7591b5 | 2014-10-12 18:37:35 -0700 | [diff] [blame] | 390 | static const ber_tlv_tag_t asn_DEF_T3_all_tags_1[] = { |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 391 | (ASN_TAG_CLASS_CONTEXT | (4 << 2)), |
| 392 | (ASN_TAG_CLASS_CONTEXT | (5 << 2)), |
| 393 | (ASN_TAG_CLASS_CONTEXT | (6 << 2)), |
| 394 | (ASN_TAG_CLASS_UNIVERSAL | (9 << 2)) |
| 395 | }; |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 396 | asn_TYPE_descriptor_t asn_DEF_T3 = { |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 397 | "T3", |
Lev Walkin | dc06f6b | 2004-10-20 15:50:55 +0000 | [diff] [blame] | 398 | "T3", |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 399 | T3_free, |
| 400 | T3_print, |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 401 | T3_constraint, |
| 402 | T3_decode_ber, |
| 403 | T3_encode_der, |
Lev Walkin | 0ebe8b3 | 2004-10-23 13:26:56 +0000 | [diff] [blame] | 404 | T3_decode_xer, |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 405 | T3_encode_xer, |
Lev Walkin | ba68c91 | 2017-07-06 07:52:39 -0700 | [diff] [blame] | 406 | 0, 0, /* No OER support, use "-gen-OER" to enable */ |
Lev Walkin | b33425f | 2017-07-14 14:59:52 +0400 | [diff] [blame] | 407 | 0, 0, /* No PER support, use "-gen-PER" to enable */ |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 408 | 0, /* Use generic outmost tag fetcher */ |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 409 | asn_DEF_T3_tags_1, |
| 410 | sizeof(asn_DEF_T3_tags_1) |
| 411 | /sizeof(asn_DEF_T3_tags_1[0]), /* 2 */ |
| 412 | asn_DEF_T3_all_tags_1, |
| 413 | sizeof(asn_DEF_T3_all_tags_1) |
| 414 | /sizeof(asn_DEF_T3_all_tags_1[0]), /* 4 */ |
Lev Walkin | b33425f | 2017-07-14 14:59:52 +0400 | [diff] [blame] | 415 | 0, /* No OER visible constraints */ |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 416 | 0, /* No PER visible constraints */ |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 417 | 0, 0, /* No members */ |
| 418 | 0 /* No specifics */ |
| 419 | }; |
| 420 | |
| 421 | |
| 422 | /*** <<< INCLUDES [T4] >>> ***/ |
| 423 | |
Lev Walkin | 22b5ed4 | 2006-09-13 02:51:20 +0000 | [diff] [blame] | 424 | #include "T5.h" |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 425 | |
| 426 | /*** <<< TYPE-DECLS [T4] >>> ***/ |
| 427 | |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 428 | typedef T5_t T4_t; |
| 429 | |
| 430 | /*** <<< FUNC-DECLS [T4] >>> ***/ |
| 431 | |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 432 | extern asn_TYPE_descriptor_t asn_DEF_T4; |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 433 | asn_struct_free_f T4_free; |
| 434 | asn_struct_print_f T4_print; |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 435 | asn_constr_check_f T4_constraint; |
| 436 | ber_type_decoder_f T4_decode_ber; |
| 437 | der_type_encoder_f T4_encode_der; |
Lev Walkin | 0ebe8b3 | 2004-10-23 13:26:56 +0000 | [diff] [blame] | 438 | xer_type_decoder_f T4_decode_xer; |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 439 | xer_type_encoder_f T4_encode_xer; |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 440 | |
| 441 | /*** <<< CODE [T4] >>> ***/ |
| 442 | |
| 443 | int |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 444 | T4_constraint(asn_TYPE_descriptor_t *td, const void *sptr, |
Lev Walkin | 1eded35 | 2006-07-13 11:19:01 +0000 | [diff] [blame] | 445 | asn_app_constraint_failed_f *ctfailcb, void *app_key) { |
Lev Walkin | 154aa18 | 2004-09-26 13:12:56 +0000 | [diff] [blame] | 446 | /* Replace with underlying type checker */ |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 447 | td->check_constraints = asn_DEF_T5.check_constraints; |
Lev Walkin | 1eded35 | 2006-07-13 11:19:01 +0000 | [diff] [blame] | 448 | return td->check_constraints(td, sptr, ctfailcb, app_key); |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 449 | } |
| 450 | |
| 451 | /* |
| 452 | * This type is implemented using T5, |
Lev Walkin | c3808c1 | 2004-09-23 22:14:58 +0000 | [diff] [blame] | 453 | * so here we adjust the DEF accordingly. |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 454 | */ |
| 455 | static void |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 456 | T4_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 457 | td->free_struct = asn_DEF_T5.free_struct; |
| 458 | td->print_struct = asn_DEF_T5.print_struct; |
Lev Walkin | 6169b8d | 2013-12-07 11:02:44 -0800 | [diff] [blame] | 459 | td->check_constraints = asn_DEF_T5.check_constraints; |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 460 | td->ber_decoder = asn_DEF_T5.ber_decoder; |
| 461 | td->der_encoder = asn_DEF_T5.der_encoder; |
| 462 | td->xer_decoder = asn_DEF_T5.xer_decoder; |
| 463 | td->xer_encoder = asn_DEF_T5.xer_encoder; |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 464 | td->uper_decoder = asn_DEF_T5.uper_decoder; |
Lev Walkin | 9f5bb3a | 2006-08-18 01:46:46 +0000 | [diff] [blame] | 465 | td->uper_encoder = asn_DEF_T5.uper_encoder; |
Lev Walkin | ba68c91 | 2017-07-06 07:52:39 -0700 | [diff] [blame] | 466 | td->oer_decoder = asn_DEF_T5.oer_decoder; |
| 467 | td->oer_encoder = asn_DEF_T5.oer_encoder; |
Lev Walkin | b33425f | 2017-07-14 14:59:52 +0400 | [diff] [blame] | 468 | if(!td->oer_constraints) |
| 469 | td->oer_constraints = asn_DEF_T5.oer_constraints; |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 470 | if(!td->per_constraints) |
| 471 | td->per_constraints = asn_DEF_T5.per_constraints; |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 472 | td->elements = asn_DEF_T5.elements; |
| 473 | td->elements_count = asn_DEF_T5.elements_count; |
| 474 | td->specifics = asn_DEF_T5.specifics; |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 475 | } |
| 476 | |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 477 | void |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 478 | T4_free(asn_TYPE_descriptor_t *td, |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 479 | void *struct_ptr, int contents_only) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 480 | T4_1_inherit_TYPE_descriptor(td); |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 481 | td->free_struct(td, struct_ptr, contents_only); |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 482 | } |
| 483 | |
| 484 | int |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 485 | T4_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 486 | int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 487 | T4_1_inherit_TYPE_descriptor(td); |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 488 | return td->print_struct(td, struct_ptr, ilevel, cb, app_key); |
| 489 | } |
| 490 | |
Lev Walkin | dc06f6b | 2004-10-20 15:50:55 +0000 | [diff] [blame] | 491 | asn_dec_rval_t |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 492 | T4_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, |
Lev Walkin | 3ebc65a | 2005-03-17 21:57:19 +0000 | [diff] [blame] | 493 | void **structure, const void *bufptr, size_t size, int tag_mode) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 494 | T4_1_inherit_TYPE_descriptor(td); |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 495 | return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 496 | } |
| 497 | |
| 498 | asn_enc_rval_t |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 499 | T4_encode_der(asn_TYPE_descriptor_t *td, |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 500 | void *structure, int tag_mode, ber_tlv_tag_t tag, |
| 501 | asn_app_consume_bytes_f *cb, void *app_key) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 502 | T4_1_inherit_TYPE_descriptor(td); |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 503 | return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); |
| 504 | } |
| 505 | |
Lev Walkin | 0ebe8b3 | 2004-10-23 13:26:56 +0000 | [diff] [blame] | 506 | asn_dec_rval_t |
| 507 | T4_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, |
Lev Walkin | 3ebc65a | 2005-03-17 21:57:19 +0000 | [diff] [blame] | 508 | void **structure, const char *opt_mname, const void *bufptr, size_t size) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 509 | T4_1_inherit_TYPE_descriptor(td); |
Lev Walkin | 0ebe8b3 | 2004-10-23 13:26:56 +0000 | [diff] [blame] | 510 | return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); |
| 511 | } |
| 512 | |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 513 | asn_enc_rval_t |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 514 | T4_encode_xer(asn_TYPE_descriptor_t *td, void *structure, |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 515 | int ilevel, enum xer_encoder_flags_e flags, |
| 516 | asn_app_consume_bytes_f *cb, void *app_key) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 517 | T4_1_inherit_TYPE_descriptor(td); |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 518 | return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 519 | } |
| 520 | |
| 521 | |
| 522 | /*** <<< STAT-DEFS [T4] >>> ***/ |
| 523 | |
Lev Walkin | a7591b5 | 2014-10-12 18:37:35 -0700 | [diff] [blame] | 524 | static const ber_tlv_tag_t asn_DEF_T4_tags_1[] = { |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 525 | (ASN_TAG_CLASS_CONTEXT | (5 << 2)), |
| 526 | (ASN_TAG_CLASS_CONTEXT | (6 << 2)), |
| 527 | (ASN_TAG_CLASS_UNIVERSAL | (9 << 2)) |
| 528 | }; |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 529 | asn_TYPE_descriptor_t asn_DEF_T4 = { |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 530 | "T4", |
Lev Walkin | dc06f6b | 2004-10-20 15:50:55 +0000 | [diff] [blame] | 531 | "T4", |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 532 | T4_free, |
| 533 | T4_print, |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 534 | T4_constraint, |
| 535 | T4_decode_ber, |
| 536 | T4_encode_der, |
Lev Walkin | 0ebe8b3 | 2004-10-23 13:26:56 +0000 | [diff] [blame] | 537 | T4_decode_xer, |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 538 | T4_encode_xer, |
Lev Walkin | ba68c91 | 2017-07-06 07:52:39 -0700 | [diff] [blame] | 539 | 0, 0, /* No OER support, use "-gen-OER" to enable */ |
Lev Walkin | b33425f | 2017-07-14 14:59:52 +0400 | [diff] [blame] | 540 | 0, 0, /* No PER support, use "-gen-PER" to enable */ |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 541 | 0, /* Use generic outmost tag fetcher */ |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 542 | asn_DEF_T4_tags_1, |
| 543 | sizeof(asn_DEF_T4_tags_1) |
| 544 | /sizeof(asn_DEF_T4_tags_1[0]) - 1, /* 2 */ |
| 545 | asn_DEF_T4_tags_1, /* Same as above */ |
| 546 | sizeof(asn_DEF_T4_tags_1) |
| 547 | /sizeof(asn_DEF_T4_tags_1[0]), /* 3 */ |
Lev Walkin | b33425f | 2017-07-14 14:59:52 +0400 | [diff] [blame] | 548 | 0, /* No OER visible constraints */ |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 549 | 0, /* No PER visible constraints */ |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 550 | 0, 0, /* No members */ |
| 551 | 0 /* No specifics */ |
| 552 | }; |
| 553 | |
| 554 | |
| 555 | /*** <<< INCLUDES [T5] >>> ***/ |
| 556 | |
Lev Walkin | 22b5ed4 | 2006-09-13 02:51:20 +0000 | [diff] [blame] | 557 | #include "T6.h" |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 558 | |
| 559 | /*** <<< TYPE-DECLS [T5] >>> ***/ |
| 560 | |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 561 | typedef T6_t T5_t; |
| 562 | |
| 563 | /*** <<< FUNC-DECLS [T5] >>> ***/ |
| 564 | |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 565 | extern asn_TYPE_descriptor_t asn_DEF_T5; |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 566 | asn_struct_free_f T5_free; |
| 567 | asn_struct_print_f T5_print; |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 568 | asn_constr_check_f T5_constraint; |
| 569 | ber_type_decoder_f T5_decode_ber; |
| 570 | der_type_encoder_f T5_encode_der; |
Lev Walkin | 0ebe8b3 | 2004-10-23 13:26:56 +0000 | [diff] [blame] | 571 | xer_type_decoder_f T5_decode_xer; |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 572 | xer_type_encoder_f T5_encode_xer; |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 573 | |
| 574 | /*** <<< CODE [T5] >>> ***/ |
| 575 | |
| 576 | int |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 577 | T5_constraint(asn_TYPE_descriptor_t *td, const void *sptr, |
Lev Walkin | 1eded35 | 2006-07-13 11:19:01 +0000 | [diff] [blame] | 578 | asn_app_constraint_failed_f *ctfailcb, void *app_key) { |
Lev Walkin | 154aa18 | 2004-09-26 13:12:56 +0000 | [diff] [blame] | 579 | /* Replace with underlying type checker */ |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 580 | td->check_constraints = asn_DEF_T6.check_constraints; |
Lev Walkin | 1eded35 | 2006-07-13 11:19:01 +0000 | [diff] [blame] | 581 | return td->check_constraints(td, sptr, ctfailcb, app_key); |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 582 | } |
| 583 | |
| 584 | /* |
| 585 | * This type is implemented using T6, |
Lev Walkin | c3808c1 | 2004-09-23 22:14:58 +0000 | [diff] [blame] | 586 | * so here we adjust the DEF accordingly. |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 587 | */ |
| 588 | static void |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 589 | T5_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 590 | td->free_struct = asn_DEF_T6.free_struct; |
| 591 | td->print_struct = asn_DEF_T6.print_struct; |
Lev Walkin | 6169b8d | 2013-12-07 11:02:44 -0800 | [diff] [blame] | 592 | td->check_constraints = asn_DEF_T6.check_constraints; |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 593 | td->ber_decoder = asn_DEF_T6.ber_decoder; |
| 594 | td->der_encoder = asn_DEF_T6.der_encoder; |
| 595 | td->xer_decoder = asn_DEF_T6.xer_decoder; |
| 596 | td->xer_encoder = asn_DEF_T6.xer_encoder; |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 597 | td->uper_decoder = asn_DEF_T6.uper_decoder; |
Lev Walkin | 9f5bb3a | 2006-08-18 01:46:46 +0000 | [diff] [blame] | 598 | td->uper_encoder = asn_DEF_T6.uper_encoder; |
Lev Walkin | ba68c91 | 2017-07-06 07:52:39 -0700 | [diff] [blame] | 599 | td->oer_decoder = asn_DEF_T6.oer_decoder; |
| 600 | td->oer_encoder = asn_DEF_T6.oer_encoder; |
Lev Walkin | b33425f | 2017-07-14 14:59:52 +0400 | [diff] [blame] | 601 | if(!td->oer_constraints) |
| 602 | td->oer_constraints = asn_DEF_T6.oer_constraints; |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 603 | if(!td->per_constraints) |
| 604 | td->per_constraints = asn_DEF_T6.per_constraints; |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 605 | td->elements = asn_DEF_T6.elements; |
| 606 | td->elements_count = asn_DEF_T6.elements_count; |
| 607 | td->specifics = asn_DEF_T6.specifics; |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 608 | } |
| 609 | |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 610 | void |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 611 | T5_free(asn_TYPE_descriptor_t *td, |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 612 | void *struct_ptr, int contents_only) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 613 | T5_1_inherit_TYPE_descriptor(td); |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 614 | td->free_struct(td, struct_ptr, contents_only); |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 615 | } |
| 616 | |
| 617 | int |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 618 | T5_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 619 | int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 620 | T5_1_inherit_TYPE_descriptor(td); |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 621 | return td->print_struct(td, struct_ptr, ilevel, cb, app_key); |
| 622 | } |
| 623 | |
Lev Walkin | dc06f6b | 2004-10-20 15:50:55 +0000 | [diff] [blame] | 624 | asn_dec_rval_t |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 625 | T5_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, |
Lev Walkin | 3ebc65a | 2005-03-17 21:57:19 +0000 | [diff] [blame] | 626 | void **structure, const void *bufptr, size_t size, int tag_mode) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 627 | T5_1_inherit_TYPE_descriptor(td); |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 628 | return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 629 | } |
| 630 | |
| 631 | asn_enc_rval_t |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 632 | T5_encode_der(asn_TYPE_descriptor_t *td, |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 633 | void *structure, int tag_mode, ber_tlv_tag_t tag, |
| 634 | asn_app_consume_bytes_f *cb, void *app_key) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 635 | T5_1_inherit_TYPE_descriptor(td); |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 636 | return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); |
| 637 | } |
| 638 | |
Lev Walkin | 0ebe8b3 | 2004-10-23 13:26:56 +0000 | [diff] [blame] | 639 | asn_dec_rval_t |
| 640 | T5_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, |
Lev Walkin | 3ebc65a | 2005-03-17 21:57:19 +0000 | [diff] [blame] | 641 | void **structure, const char *opt_mname, const void *bufptr, size_t size) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 642 | T5_1_inherit_TYPE_descriptor(td); |
Lev Walkin | 0ebe8b3 | 2004-10-23 13:26:56 +0000 | [diff] [blame] | 643 | return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); |
| 644 | } |
| 645 | |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 646 | asn_enc_rval_t |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 647 | T5_encode_xer(asn_TYPE_descriptor_t *td, void *structure, |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 648 | int ilevel, enum xer_encoder_flags_e flags, |
| 649 | asn_app_consume_bytes_f *cb, void *app_key) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 650 | T5_1_inherit_TYPE_descriptor(td); |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 651 | return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 652 | } |
| 653 | |
| 654 | |
| 655 | /*** <<< STAT-DEFS [T5] >>> ***/ |
| 656 | |
Lev Walkin | a7591b5 | 2014-10-12 18:37:35 -0700 | [diff] [blame] | 657 | static const ber_tlv_tag_t asn_DEF_T5_tags_1[] = { |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 658 | (ASN_TAG_CLASS_CONTEXT | (6 << 2)), |
| 659 | (ASN_TAG_CLASS_UNIVERSAL | (9 << 2)) |
| 660 | }; |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 661 | asn_TYPE_descriptor_t asn_DEF_T5 = { |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 662 | "T5", |
Lev Walkin | dc06f6b | 2004-10-20 15:50:55 +0000 | [diff] [blame] | 663 | "T5", |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 664 | T5_free, |
| 665 | T5_print, |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 666 | T5_constraint, |
| 667 | T5_decode_ber, |
| 668 | T5_encode_der, |
Lev Walkin | 0ebe8b3 | 2004-10-23 13:26:56 +0000 | [diff] [blame] | 669 | T5_decode_xer, |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 670 | T5_encode_xer, |
Lev Walkin | ba68c91 | 2017-07-06 07:52:39 -0700 | [diff] [blame] | 671 | 0, 0, /* No OER support, use "-gen-OER" to enable */ |
Lev Walkin | b33425f | 2017-07-14 14:59:52 +0400 | [diff] [blame] | 672 | 0, 0, /* No PER support, use "-gen-PER" to enable */ |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 673 | 0, /* Use generic outmost tag fetcher */ |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 674 | asn_DEF_T5_tags_1, |
| 675 | sizeof(asn_DEF_T5_tags_1) |
| 676 | /sizeof(asn_DEF_T5_tags_1[0]) - 1, /* 1 */ |
| 677 | asn_DEF_T5_tags_1, /* Same as above */ |
| 678 | sizeof(asn_DEF_T5_tags_1) |
| 679 | /sizeof(asn_DEF_T5_tags_1[0]), /* 2 */ |
Lev Walkin | b33425f | 2017-07-14 14:59:52 +0400 | [diff] [blame] | 680 | 0, /* No OER visible constraints */ |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 681 | 0, /* No PER visible constraints */ |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 682 | 0, 0, /* No members */ |
| 683 | 0 /* No specifics */ |
| 684 | }; |
| 685 | |
| 686 | |
| 687 | /*** <<< INCLUDES [T6] >>> ***/ |
| 688 | |
| 689 | #include <NativeReal.h> |
| 690 | |
| 691 | /*** <<< TYPE-DECLS [T6] >>> ***/ |
| 692 | |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 693 | typedef double T6_t; |
| 694 | |
| 695 | /*** <<< FUNC-DECLS [T6] >>> ***/ |
| 696 | |
Lev Walkin | caf0d5a | 2005-03-04 23:48:19 +0000 | [diff] [blame] | 697 | extern asn_TYPE_descriptor_t asn_DEF_T6; |
| 698 | asn_struct_free_f T6_free; |
| 699 | asn_struct_print_f T6_print; |
| 700 | asn_constr_check_f T6_constraint; |
| 701 | ber_type_decoder_f T6_decode_ber; |
| 702 | der_type_encoder_f T6_encode_der; |
| 703 | xer_type_decoder_f T6_decode_xer; |
| 704 | xer_type_encoder_f T6_encode_xer; |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 705 | |
| 706 | /*** <<< CODE [T6] >>> ***/ |
| 707 | |
Lev Walkin | caf0d5a | 2005-03-04 23:48:19 +0000 | [diff] [blame] | 708 | int |
| 709 | T6_constraint(asn_TYPE_descriptor_t *td, const void *sptr, |
Lev Walkin | 1eded35 | 2006-07-13 11:19:01 +0000 | [diff] [blame] | 710 | asn_app_constraint_failed_f *ctfailcb, void *app_key) { |
Lev Walkin | caf0d5a | 2005-03-04 23:48:19 +0000 | [diff] [blame] | 711 | /* Replace with underlying type checker */ |
| 712 | td->check_constraints = asn_DEF_NativeReal.check_constraints; |
Lev Walkin | 1eded35 | 2006-07-13 11:19:01 +0000 | [diff] [blame] | 713 | return td->check_constraints(td, sptr, ctfailcb, app_key); |
Lev Walkin | caf0d5a | 2005-03-04 23:48:19 +0000 | [diff] [blame] | 714 | } |
| 715 | |
| 716 | /* |
| 717 | * This type is implemented using NativeReal, |
| 718 | * so here we adjust the DEF accordingly. |
| 719 | */ |
| 720 | static void |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 721 | T6_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { |
Lev Walkin | caf0d5a | 2005-03-04 23:48:19 +0000 | [diff] [blame] | 722 | td->free_struct = asn_DEF_NativeReal.free_struct; |
| 723 | td->print_struct = asn_DEF_NativeReal.print_struct; |
Lev Walkin | 6169b8d | 2013-12-07 11:02:44 -0800 | [diff] [blame] | 724 | td->check_constraints = asn_DEF_NativeReal.check_constraints; |
Lev Walkin | caf0d5a | 2005-03-04 23:48:19 +0000 | [diff] [blame] | 725 | td->ber_decoder = asn_DEF_NativeReal.ber_decoder; |
| 726 | td->der_encoder = asn_DEF_NativeReal.der_encoder; |
| 727 | td->xer_decoder = asn_DEF_NativeReal.xer_decoder; |
| 728 | td->xer_encoder = asn_DEF_NativeReal.xer_encoder; |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 729 | td->uper_decoder = asn_DEF_NativeReal.uper_decoder; |
Lev Walkin | 9f5bb3a | 2006-08-18 01:46:46 +0000 | [diff] [blame] | 730 | td->uper_encoder = asn_DEF_NativeReal.uper_encoder; |
Lev Walkin | ba68c91 | 2017-07-06 07:52:39 -0700 | [diff] [blame] | 731 | td->oer_decoder = asn_DEF_NativeReal.oer_decoder; |
| 732 | td->oer_encoder = asn_DEF_NativeReal.oer_encoder; |
Lev Walkin | b33425f | 2017-07-14 14:59:52 +0400 | [diff] [blame] | 733 | if(!td->oer_constraints) |
| 734 | td->oer_constraints = asn_DEF_NativeReal.oer_constraints; |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 735 | if(!td->per_constraints) |
| 736 | td->per_constraints = asn_DEF_NativeReal.per_constraints; |
Lev Walkin | caf0d5a | 2005-03-04 23:48:19 +0000 | [diff] [blame] | 737 | td->elements = asn_DEF_NativeReal.elements; |
| 738 | td->elements_count = asn_DEF_NativeReal.elements_count; |
| 739 | td->specifics = asn_DEF_NativeReal.specifics; |
| 740 | } |
| 741 | |
| 742 | void |
| 743 | T6_free(asn_TYPE_descriptor_t *td, |
| 744 | void *struct_ptr, int contents_only) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 745 | T6_1_inherit_TYPE_descriptor(td); |
Lev Walkin | caf0d5a | 2005-03-04 23:48:19 +0000 | [diff] [blame] | 746 | td->free_struct(td, struct_ptr, contents_only); |
| 747 | } |
| 748 | |
| 749 | int |
| 750 | T6_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, |
| 751 | int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 752 | T6_1_inherit_TYPE_descriptor(td); |
Lev Walkin | caf0d5a | 2005-03-04 23:48:19 +0000 | [diff] [blame] | 753 | return td->print_struct(td, struct_ptr, ilevel, cb, app_key); |
| 754 | } |
| 755 | |
| 756 | asn_dec_rval_t |
| 757 | T6_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, |
Lev Walkin | 3ebc65a | 2005-03-17 21:57:19 +0000 | [diff] [blame] | 758 | void **structure, const void *bufptr, size_t size, int tag_mode) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 759 | T6_1_inherit_TYPE_descriptor(td); |
Lev Walkin | caf0d5a | 2005-03-04 23:48:19 +0000 | [diff] [blame] | 760 | return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); |
| 761 | } |
| 762 | |
| 763 | asn_enc_rval_t |
| 764 | T6_encode_der(asn_TYPE_descriptor_t *td, |
| 765 | void *structure, int tag_mode, ber_tlv_tag_t tag, |
| 766 | asn_app_consume_bytes_f *cb, void *app_key) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 767 | T6_1_inherit_TYPE_descriptor(td); |
Lev Walkin | caf0d5a | 2005-03-04 23:48:19 +0000 | [diff] [blame] | 768 | return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); |
| 769 | } |
| 770 | |
| 771 | asn_dec_rval_t |
| 772 | T6_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, |
Lev Walkin | 3ebc65a | 2005-03-17 21:57:19 +0000 | [diff] [blame] | 773 | void **structure, const char *opt_mname, const void *bufptr, size_t size) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 774 | T6_1_inherit_TYPE_descriptor(td); |
Lev Walkin | caf0d5a | 2005-03-04 23:48:19 +0000 | [diff] [blame] | 775 | return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); |
| 776 | } |
| 777 | |
| 778 | asn_enc_rval_t |
| 779 | T6_encode_xer(asn_TYPE_descriptor_t *td, void *structure, |
| 780 | int ilevel, enum xer_encoder_flags_e flags, |
| 781 | asn_app_consume_bytes_f *cb, void *app_key) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 782 | T6_1_inherit_TYPE_descriptor(td); |
Lev Walkin | caf0d5a | 2005-03-04 23:48:19 +0000 | [diff] [blame] | 783 | return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); |
| 784 | } |
| 785 | |
| 786 | |
| 787 | /*** <<< STAT-DEFS [T6] >>> ***/ |
| 788 | |
Lev Walkin | a7591b5 | 2014-10-12 18:37:35 -0700 | [diff] [blame] | 789 | static const ber_tlv_tag_t asn_DEF_T6_tags_1[] = { |
Lev Walkin | caf0d5a | 2005-03-04 23:48:19 +0000 | [diff] [blame] | 790 | (ASN_TAG_CLASS_UNIVERSAL | (9 << 2)) |
| 791 | }; |
| 792 | asn_TYPE_descriptor_t asn_DEF_T6 = { |
| 793 | "T6", |
| 794 | "T6", |
| 795 | T6_free, |
| 796 | T6_print, |
| 797 | T6_constraint, |
| 798 | T6_decode_ber, |
| 799 | T6_encode_der, |
| 800 | T6_decode_xer, |
| 801 | T6_encode_xer, |
Lev Walkin | ba68c91 | 2017-07-06 07:52:39 -0700 | [diff] [blame] | 802 | 0, 0, /* No OER support, use "-gen-OER" to enable */ |
Lev Walkin | b33425f | 2017-07-14 14:59:52 +0400 | [diff] [blame] | 803 | 0, 0, /* No PER support, use "-gen-PER" to enable */ |
Lev Walkin | caf0d5a | 2005-03-04 23:48:19 +0000 | [diff] [blame] | 804 | 0, /* Use generic outmost tag fetcher */ |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 805 | asn_DEF_T6_tags_1, |
| 806 | sizeof(asn_DEF_T6_tags_1) |
| 807 | /sizeof(asn_DEF_T6_tags_1[0]), /* 1 */ |
| 808 | asn_DEF_T6_tags_1, /* Same as above */ |
| 809 | sizeof(asn_DEF_T6_tags_1) |
| 810 | /sizeof(asn_DEF_T6_tags_1[0]), /* 1 */ |
Lev Walkin | b33425f | 2017-07-14 14:59:52 +0400 | [diff] [blame] | 811 | 0, /* No OER visible constraints */ |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 812 | 0, /* No PER visible constraints */ |
Lev Walkin | caf0d5a | 2005-03-04 23:48:19 +0000 | [diff] [blame] | 813 | 0, 0, /* No members */ |
| 814 | 0 /* No specifics */ |
| 815 | }; |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 816 | |
| 817 | |
| 818 | /*** <<< INCLUDES [T] >>> ***/ |
| 819 | |
Lev Walkin | 22b5ed4 | 2006-09-13 02:51:20 +0000 | [diff] [blame] | 820 | #include "Ts.h" |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 821 | |
| 822 | /*** <<< TYPE-DECLS [T] >>> ***/ |
| 823 | |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 824 | typedef Ts_t T_t; |
| 825 | |
| 826 | /*** <<< FUNC-DECLS [T] >>> ***/ |
| 827 | |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 828 | extern asn_TYPE_descriptor_t asn_DEF_T; |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 829 | asn_struct_free_f T_free; |
| 830 | asn_struct_print_f T_print; |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 831 | asn_constr_check_f T_constraint; |
| 832 | ber_type_decoder_f T_decode_ber; |
| 833 | der_type_encoder_f T_encode_der; |
Lev Walkin | 0ebe8b3 | 2004-10-23 13:26:56 +0000 | [diff] [blame] | 834 | xer_type_decoder_f T_decode_xer; |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 835 | xer_type_encoder_f T_encode_xer; |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 836 | |
| 837 | /*** <<< CODE [T] >>> ***/ |
| 838 | |
| 839 | int |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 840 | T_constraint(asn_TYPE_descriptor_t *td, const void *sptr, |
Lev Walkin | 1eded35 | 2006-07-13 11:19:01 +0000 | [diff] [blame] | 841 | asn_app_constraint_failed_f *ctfailcb, void *app_key) { |
Lev Walkin | 154aa18 | 2004-09-26 13:12:56 +0000 | [diff] [blame] | 842 | /* Replace with underlying type checker */ |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 843 | td->check_constraints = asn_DEF_Ts.check_constraints; |
Lev Walkin | 1eded35 | 2006-07-13 11:19:01 +0000 | [diff] [blame] | 844 | return td->check_constraints(td, sptr, ctfailcb, app_key); |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 845 | } |
| 846 | |
| 847 | /* |
| 848 | * This type is implemented using Ts, |
Lev Walkin | c3808c1 | 2004-09-23 22:14:58 +0000 | [diff] [blame] | 849 | * so here we adjust the DEF accordingly. |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 850 | */ |
| 851 | static void |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 852 | T_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 853 | td->free_struct = asn_DEF_Ts.free_struct; |
| 854 | td->print_struct = asn_DEF_Ts.print_struct; |
Lev Walkin | 6169b8d | 2013-12-07 11:02:44 -0800 | [diff] [blame] | 855 | td->check_constraints = asn_DEF_Ts.check_constraints; |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 856 | td->ber_decoder = asn_DEF_Ts.ber_decoder; |
| 857 | td->der_encoder = asn_DEF_Ts.der_encoder; |
| 858 | td->xer_decoder = asn_DEF_Ts.xer_decoder; |
| 859 | td->xer_encoder = asn_DEF_Ts.xer_encoder; |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 860 | td->uper_decoder = asn_DEF_Ts.uper_decoder; |
Lev Walkin | 9f5bb3a | 2006-08-18 01:46:46 +0000 | [diff] [blame] | 861 | td->uper_encoder = asn_DEF_Ts.uper_encoder; |
Lev Walkin | ba68c91 | 2017-07-06 07:52:39 -0700 | [diff] [blame] | 862 | td->oer_decoder = asn_DEF_Ts.oer_decoder; |
| 863 | td->oer_encoder = asn_DEF_Ts.oer_encoder; |
Lev Walkin | b33425f | 2017-07-14 14:59:52 +0400 | [diff] [blame] | 864 | if(!td->oer_constraints) |
| 865 | td->oer_constraints = asn_DEF_Ts.oer_constraints; |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 866 | if(!td->per_constraints) |
| 867 | td->per_constraints = asn_DEF_Ts.per_constraints; |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 868 | td->elements = asn_DEF_Ts.elements; |
| 869 | td->elements_count = asn_DEF_Ts.elements_count; |
| 870 | td->specifics = asn_DEF_Ts.specifics; |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 871 | } |
| 872 | |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 873 | void |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 874 | T_free(asn_TYPE_descriptor_t *td, |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 875 | void *struct_ptr, int contents_only) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 876 | T_1_inherit_TYPE_descriptor(td); |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 877 | td->free_struct(td, struct_ptr, contents_only); |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 878 | } |
| 879 | |
| 880 | int |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 881 | T_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 882 | int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 883 | T_1_inherit_TYPE_descriptor(td); |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 884 | return td->print_struct(td, struct_ptr, ilevel, cb, app_key); |
| 885 | } |
| 886 | |
Lev Walkin | dc06f6b | 2004-10-20 15:50:55 +0000 | [diff] [blame] | 887 | asn_dec_rval_t |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 888 | T_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, |
Lev Walkin | 3ebc65a | 2005-03-17 21:57:19 +0000 | [diff] [blame] | 889 | void **structure, const void *bufptr, size_t size, int tag_mode) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 890 | T_1_inherit_TYPE_descriptor(td); |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 891 | return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 892 | } |
| 893 | |
| 894 | asn_enc_rval_t |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 895 | T_encode_der(asn_TYPE_descriptor_t *td, |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 896 | void *structure, int tag_mode, ber_tlv_tag_t tag, |
| 897 | asn_app_consume_bytes_f *cb, void *app_key) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 898 | T_1_inherit_TYPE_descriptor(td); |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 899 | return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); |
| 900 | } |
| 901 | |
Lev Walkin | 0ebe8b3 | 2004-10-23 13:26:56 +0000 | [diff] [blame] | 902 | asn_dec_rval_t |
| 903 | T_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, |
Lev Walkin | 3ebc65a | 2005-03-17 21:57:19 +0000 | [diff] [blame] | 904 | void **structure, const char *opt_mname, const void *bufptr, size_t size) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 905 | T_1_inherit_TYPE_descriptor(td); |
Lev Walkin | 0ebe8b3 | 2004-10-23 13:26:56 +0000 | [diff] [blame] | 906 | return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); |
| 907 | } |
| 908 | |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 909 | asn_enc_rval_t |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 910 | T_encode_xer(asn_TYPE_descriptor_t *td, void *structure, |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 911 | int ilevel, enum xer_encoder_flags_e flags, |
| 912 | asn_app_consume_bytes_f *cb, void *app_key) { |
Lev Walkin | e8318b8 | 2005-03-06 09:29:03 +0000 | [diff] [blame] | 913 | T_1_inherit_TYPE_descriptor(td); |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 914 | return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 915 | } |
| 916 | |
| 917 | |
| 918 | /*** <<< STAT-DEFS [T] >>> ***/ |
| 919 | |
Lev Walkin | a7591b5 | 2014-10-12 18:37:35 -0700 | [diff] [blame] | 920 | static const ber_tlv_tag_t asn_DEF_T_tags_1[] = { |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 921 | (ASN_TAG_CLASS_CONTEXT | (0 << 2)), |
| 922 | (ASN_TAG_CLASS_CONTEXT | (123 << 2)), |
| 923 | (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) |
| 924 | }; |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 925 | asn_TYPE_descriptor_t asn_DEF_T = { |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 926 | "T", |
Lev Walkin | dc06f6b | 2004-10-20 15:50:55 +0000 | [diff] [blame] | 927 | "T", |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 928 | T_free, |
| 929 | T_print, |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 930 | T_constraint, |
| 931 | T_decode_ber, |
| 932 | T_encode_der, |
Lev Walkin | 0ebe8b3 | 2004-10-23 13:26:56 +0000 | [diff] [blame] | 933 | T_decode_xer, |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 934 | T_encode_xer, |
Lev Walkin | ba68c91 | 2017-07-06 07:52:39 -0700 | [diff] [blame] | 935 | 0, 0, /* No OER support, use "-gen-OER" to enable */ |
Lev Walkin | b33425f | 2017-07-14 14:59:52 +0400 | [diff] [blame] | 936 | 0, 0, /* No PER support, use "-gen-PER" to enable */ |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 937 | 0, /* Use generic outmost tag fetcher */ |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 938 | asn_DEF_T_tags_1, |
| 939 | sizeof(asn_DEF_T_tags_1) |
| 940 | /sizeof(asn_DEF_T_tags_1[0]) - 2, /* 1 */ |
| 941 | asn_DEF_T_tags_1, /* Same as above */ |
| 942 | sizeof(asn_DEF_T_tags_1) |
| 943 | /sizeof(asn_DEF_T_tags_1[0]), /* 3 */ |
Lev Walkin | b33425f | 2017-07-14 14:59:52 +0400 | [diff] [blame] | 944 | 0, /* No OER visible constraints */ |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 945 | 0, /* No PER visible constraints */ |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 946 | 0, 0, /* Defined elsewhere */ |
| 947 | 0 /* No specifics */ |
| 948 | }; |
| 949 | |
| 950 | |
| 951 | /*** <<< INCLUDES [Ts] >>> ***/ |
| 952 | |
Lev Walkin | 22b5ed4 | 2006-09-13 02:51:20 +0000 | [diff] [blame] | 953 | #include "T2.h" |
| 954 | #include "T3.h" |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 955 | #include <constr_SEQUENCE.h> |
| 956 | |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 957 | /*** <<< TYPE-DECLS [Ts] >>> ***/ |
| 958 | |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 959 | typedef struct Ts { |
| 960 | T2_t m1; |
| 961 | T3_t *m2 /* OPTIONAL */; |
| 962 | T3_t m3; |
| 963 | |
| 964 | /* Context for parsing across buffer boundaries */ |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 965 | asn_struct_ctx_t _asn_ctx; |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 966 | } Ts_t; |
| 967 | |
Lev Walkin | c828571 | 2005-03-04 22:18:20 +0000 | [diff] [blame] | 968 | /*** <<< FUNC-DECLS [Ts] >>> ***/ |
| 969 | |
| 970 | extern asn_TYPE_descriptor_t asn_DEF_Ts; |
| 971 | |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 972 | /*** <<< STAT-DEFS [Ts] >>> ***/ |
| 973 | |
Lev Walkin | e0272aa | 2005-03-04 11:26:08 +0000 | [diff] [blame] | 974 | static asn_TYPE_member_t asn_MBR_Ts_1[] = { |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 975 | { ATF_NOFLAGS, 0, offsetof(struct Ts, m1), |
| 976 | .tag = (ASN_TAG_CLASS_CONTEXT | (1 << 2)), |
| 977 | .tag_mode = -1, /* IMPLICIT tag at current level */ |
Lev Walkin | ae7bf3f | 2005-08-29 10:31:14 +0000 | [diff] [blame] | 978 | .type = &asn_DEF_T2, |
Lev Walkin | ba58e1b | 2005-01-17 12:20:19 +0000 | [diff] [blame] | 979 | .memb_constraints = 0, /* Defer constraints checking to the member type */ |
Lev Walkin | b33425f | 2017-07-14 14:59:52 +0400 | [diff] [blame] | 980 | .oer_constraints = 0, /* OER is not compiled, use -gen-OER */ |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 981 | .per_constraints = 0, /* PER is not compiled, use -gen-PER */ |
| 982 | .default_value = 0, |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 983 | .name = "m1" |
| 984 | }, |
| 985 | { ATF_POINTER, 1, offsetof(struct Ts, m2), |
| 986 | .tag = (ASN_TAG_CLASS_CONTEXT | (2 << 2)), |
| 987 | .tag_mode = +1, /* EXPLICIT tag at current level */ |
Lev Walkin | ae7bf3f | 2005-08-29 10:31:14 +0000 | [diff] [blame] | 988 | .type = &asn_DEF_T3, |
Lev Walkin | ba58e1b | 2005-01-17 12:20:19 +0000 | [diff] [blame] | 989 | .memb_constraints = 0, /* Defer constraints checking to the member type */ |
Lev Walkin | b33425f | 2017-07-14 14:59:52 +0400 | [diff] [blame] | 990 | .oer_constraints = 0, /* OER is not compiled, use -gen-OER */ |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 991 | .per_constraints = 0, /* PER is not compiled, use -gen-PER */ |
| 992 | .default_value = 0, |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 993 | .name = "m2" |
| 994 | }, |
| 995 | { ATF_NOFLAGS, 0, offsetof(struct Ts, m3), |
| 996 | .tag = (ASN_TAG_CLASS_CONTEXT | (3 << 2)), |
| 997 | .tag_mode = -1, /* IMPLICIT tag at current level */ |
Lev Walkin | ae7bf3f | 2005-08-29 10:31:14 +0000 | [diff] [blame] | 998 | .type = &asn_DEF_T3, |
Lev Walkin | ba58e1b | 2005-01-17 12:20:19 +0000 | [diff] [blame] | 999 | .memb_constraints = 0, /* Defer constraints checking to the member type */ |
Lev Walkin | b33425f | 2017-07-14 14:59:52 +0400 | [diff] [blame] | 1000 | .oer_constraints = 0, /* OER is not compiled, use -gen-OER */ |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 1001 | .per_constraints = 0, /* PER is not compiled, use -gen-PER */ |
| 1002 | .default_value = 0, |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 1003 | .name = "m3" |
| 1004 | }, |
| 1005 | }; |
Lev Walkin | a7591b5 | 2014-10-12 18:37:35 -0700 | [diff] [blame] | 1006 | static const ber_tlv_tag_t asn_DEF_Ts_tags_1[] = { |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 1007 | (ASN_TAG_CLASS_CONTEXT | (123 << 2)), |
| 1008 | (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) |
| 1009 | }; |
Lev Walkin | a7591b5 | 2014-10-12 18:37:35 -0700 | [diff] [blame] | 1010 | static const asn_TYPE_tag2member_t asn_MAP_Ts_tag2el_1[] = { |
Lev Walkin | 4062b01 | 2013-10-11 14:29:38 -0700 | [diff] [blame] | 1011 | { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* m1 */ |
| 1012 | { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* m2 */ |
| 1013 | { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 } /* m3 */ |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 1014 | }; |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 1015 | static asn_SEQUENCE_specifics_t asn_SPC_Ts_specs_1 = { |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 1016 | sizeof(struct Ts), |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 1017 | offsetof(struct Ts, _asn_ctx), |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 1018 | asn_MAP_Ts_tag2el_1, |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 1019 | 3, /* Count of tags in the map */ |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 1020 | 0, 0, 0, /* Optional elements (not needed) */ |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 1021 | -1, /* Start extensions */ |
| 1022 | -1 /* Stop extensions */ |
| 1023 | }; |
Lev Walkin | dfae975 | 2004-09-29 13:19:37 +0000 | [diff] [blame] | 1024 | asn_TYPE_descriptor_t asn_DEF_Ts = { |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 1025 | "Ts", |
Lev Walkin | dc06f6b | 2004-10-20 15:50:55 +0000 | [diff] [blame] | 1026 | "Ts", |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 1027 | SEQUENCE_free, |
| 1028 | SEQUENCE_print, |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 1029 | SEQUENCE_constraint, |
| 1030 | SEQUENCE_decode_ber, |
| 1031 | SEQUENCE_encode_der, |
Lev Walkin | 61b40d8 | 2004-10-23 15:07:45 +0000 | [diff] [blame] | 1032 | SEQUENCE_decode_xer, |
Lev Walkin | a9cc46e | 2004-09-22 16:06:28 +0000 | [diff] [blame] | 1033 | SEQUENCE_encode_xer, |
Lev Walkin | ba68c91 | 2017-07-06 07:52:39 -0700 | [diff] [blame] | 1034 | 0, 0, /* No OER support, use "-gen-OER" to enable */ |
Lev Walkin | b33425f | 2017-07-14 14:59:52 +0400 | [diff] [blame] | 1035 | 0, 0, /* No PER support, use "-gen-PER" to enable */ |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 1036 | 0, /* Use generic outmost tag fetcher */ |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 1037 | asn_DEF_Ts_tags_1, |
| 1038 | sizeof(asn_DEF_Ts_tags_1) |
| 1039 | /sizeof(asn_DEF_Ts_tags_1[0]) - 1, /* 1 */ |
| 1040 | asn_DEF_Ts_tags_1, /* Same as above */ |
| 1041 | sizeof(asn_DEF_Ts_tags_1) |
| 1042 | /sizeof(asn_DEF_Ts_tags_1[0]), /* 2 */ |
Lev Walkin | b33425f | 2017-07-14 14:59:52 +0400 | [diff] [blame] | 1043 | 0, /* No OER visible constraints */ |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 1044 | 0, /* No PER visible constraints */ |
Lev Walkin | e0272aa | 2005-03-04 11:26:08 +0000 | [diff] [blame] | 1045 | asn_MBR_Ts_1, |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 1046 | 3, /* Elements count */ |
Lev Walkin | 59b176e | 2005-11-26 11:25:14 +0000 | [diff] [blame] | 1047 | &asn_SPC_Ts_specs_1 /* Additional specs */ |
Lev Walkin | 2888f27 | 2004-09-14 12:46:58 +0000 | [diff] [blame] | 1048 | }; |
| 1049 | |