1 /*****************************************************************************
2 # Copyright 2019 AT&T Intellectual Property *
4 # Licensed under the Apache License, Version 2.0 (the "License"); *
5 # you may not use this file except in compliance with the License. *
6 # You may obtain a copy of the License at *
8 # http://www.apache.org/licenses/LICENSE-2.0 *
10 # Unless required by applicable law or agreed to in writing, software *
11 # distributed under the License is distributed on an "AS IS" BASIS, *
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
13 # See the License for the specific language governing permissions and *
14 # limitations under the License. *
16 ******************************************************************************/
20 #include "asn/asn.hpp"
21 static_assert(ASN_API_VERSION_MAJOR == 5, "re-generate the ASN parser's code using 'make regen-asn' (do not use -j option)");
23 #include "E2AP-IEs.hpp"
24 #include "X2AP-IEs.hpp"
25 #include "X2AP-Constants.hpp"
26 #include "X2AP-Containers.hpp"
27 #include "E2AP-Constants.hpp"
30 RANfunction-Item ::= SEQUENCE {
31 ranFunctionID RANfunctionID,
32 ranFunctionDefinition RANfunctionDefinition,
37 struct RANfunction_Item : asn::sequence<2, 0, true, 0>
39 static constexpr const char* name() {return "RANfunction-Item";}
40 using parent_t = asn::sequence<2, 0, true, 0>;
41 struct ranFunctionID_t : RANfunctionID
43 static constexpr const char* name() {return "ranFunctionID_t";}
44 using parent_t = RANfunctionID;
47 ranFunctionID_t& ref_ranFunctionID() {return ranFunctionID;}
48 ranFunctionID_t const& ref_ranFunctionID() const {return ranFunctionID;}
49 struct ranFunctionDefinition_t : RANfunctionDefinition
51 static constexpr const char* name() {return "ranFunctionDefinition_t";}
52 using parent_t = RANfunctionDefinition;
55 ranFunctionDefinition_t& ref_ranFunctionDefinition() {return ranFunctionDefinition;}
56 ranFunctionDefinition_t const& ref_ranFunctionDefinition() const {return ranFunctionDefinition;}
57 template<typename V> void decode(V& v)
60 v(ranFunctionDefinition);
63 template<typename V> void encode(V& v) const
66 v(ranFunctionDefinition);
71 ranFunctionID.clear();
72 ranFunctionDefinition.clear();
76 ranFunctionID_t ranFunctionID;
77 ranFunctionDefinition_t ranFunctionDefinition;
81 RANfunction-ItemIEs X2AP-PROTOCOL-IES ::= {
82 { ID id-RANfunction-Item CRITICALITY ignore TYPE RANfunction-Item PRESENCE mandatory },
87 struct RANfunction_ItemIEs
89 struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
91 size_t get_index() const {return type;}
92 bool is_unknown() const { return type == 2; }
93 void clear() {type = 0;}
94 void select_id_RANfunction_Item() { set(id_RANfunction_Item); type=1;}
95 X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
96 template<typename V> bool decode(V& v)
99 if(!v(ref_nested())) return false;
100 if(equal(id_RANfunction_Item)) { type = 1; return true; }
101 else { type = 2; return true;}
105 template<typename V> bool encode(V& v) const
107 return v(ref_nested());
111 template<typename V> bool decode(size_t index, V& v)
116 case 1: type = 1; if(v(ref_nested())) { return equal(id_RANfunction_Item);} return false;
117 case 2: type = 2; return v(ref_nested());
118 ref_nested().clear();
123 template<typename V> bool encode(size_t index, V& v) const
125 if(index != type) {return false;} return v(ref_nested());
132 struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
134 size_t get_index() const {return type;}
135 bool is_unknown() const { return type == 2; }
136 void clear() {type = 0;}
137 void select_id_RANfunction_Item() { set(ignore); type=1;}
138 X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
139 template<typename V> bool decode(V& v)
142 if(!v(ref_nested())) return false;
143 if(equal(ignore)) { type = 1; return true; }
144 else { type = 2; return true;}
148 template<typename V> bool encode(V& v) const
150 return v(ref_nested());
154 template<typename V> bool decode(size_t index, V& v)
159 case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
160 case 2: type = 2; return v(ref_nested());
161 ref_nested().clear();
166 template<typename V> bool encode(size_t index, V& v) const
168 if(index != type) {return false;} return v(ref_nested());
175 struct Value_t : asn::typefield<true>
177 ~Value_t() {clear();}
178 size_t get_index() const {return type;}
179 RANfunction_Item& select_id_RANfunction_Item() { return set<RANfunction_Item>(1); }
180 RANfunction_Item const* get_id_RANfunction_Item() const { return get<RANfunction_Item>(1); }
181 bool is_unknown() const { return type == 2; }
186 case 1: var.destroy<RANfunction_Item>(); break;
188 type = 0; ref_nested().clear();
190 template<typename V> static inline void enumerate(V& v)
192 v.template operator()<RANfunction_Item>(1);
196 template<typename V> bool decode(size_t index, V& v)
201 case 1: v(select_id_RANfunction_Item()); return true;
202 case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
207 template<typename V> bool encode(size_t index, V& v) const
209 if(index != type) return false;
212 case 1: v(var.as<RANfunction_Item>()); return true;
218 template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
219 template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
222 char dummy1[sizeof(RANfunction_Item)];
225 asn::variant<sizeof(union_type)> var;
229 struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
231 size_t get_index() const {return type;}
232 bool is_unknown() const { return type == 2; }
233 void clear() {type = 0;}
234 void select_id_RANfunction_Item() { set(mandatory); type=1;}
235 X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
236 template<typename V> bool decode(V& v)
239 if(!v(ref_nested())) return false;
240 if(equal(mandatory)) { type = 1; return true; }
241 else { type = 2; return true;}
245 template<typename V> bool encode(V& v) const
247 return v(ref_nested());
251 template<typename V> bool decode(size_t index, V& v)
256 case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
257 case 2: type = 2; return v(ref_nested());
258 ref_nested().clear();
263 template<typename V> bool encode(size_t index, V& v) const
265 if(index != type) {return false;} return v(ref_nested());
275 RANfunctionID-Item ::= SEQUENCE {
276 ranFunctionID RANfunctionID,
281 struct RANfunctionID_Item : asn::sequence<1, 0, true, 0>
283 static constexpr const char* name() {return "RANfunctionID-Item";}
284 using parent_t = asn::sequence<1, 0, true, 0>;
285 struct ranFunctionID_t : RANfunctionID
287 static constexpr const char* name() {return "ranFunctionID_t";}
288 using parent_t = RANfunctionID;
291 ranFunctionID_t& ref_ranFunctionID() {return ranFunctionID;}
292 ranFunctionID_t const& ref_ranFunctionID() const {return ranFunctionID;}
293 template<typename V> void decode(V& v)
298 template<typename V> void encode(V& v) const
305 ranFunctionID.clear();
309 ranFunctionID_t ranFunctionID;
313 RANfunctionID-ItemIEs X2AP-PROTOCOL-IES ::= {
314 { ID id-RANfunctionID-Item CRITICALITY ignore TYPE RANfunctionID-Item PRESENCE mandatory },
319 struct RANfunctionID_ItemIEs
321 struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
323 size_t get_index() const {return type;}
324 bool is_unknown() const { return type == 2; }
325 void clear() {type = 0;}
326 void select_id_RANfunctionID_Item() { set(id_RANfunctionID_Item); type=1;}
327 X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
328 template<typename V> bool decode(V& v)
331 if(!v(ref_nested())) return false;
332 if(equal(id_RANfunctionID_Item)) { type = 1; return true; }
333 else { type = 2; return true;}
337 template<typename V> bool encode(V& v) const
339 return v(ref_nested());
343 template<typename V> bool decode(size_t index, V& v)
348 case 1: type = 1; if(v(ref_nested())) { return equal(id_RANfunctionID_Item);} return false;
349 case 2: type = 2; return v(ref_nested());
350 ref_nested().clear();
355 template<typename V> bool encode(size_t index, V& v) const
357 if(index != type) {return false;} return v(ref_nested());
364 struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
366 size_t get_index() const {return type;}
367 bool is_unknown() const { return type == 2; }
368 void clear() {type = 0;}
369 void select_id_RANfunctionID_Item() { set(ignore); type=1;}
370 X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
371 template<typename V> bool decode(V& v)
374 if(!v(ref_nested())) return false;
375 if(equal(ignore)) { type = 1; return true; }
376 else { type = 2; return true;}
380 template<typename V> bool encode(V& v) const
382 return v(ref_nested());
386 template<typename V> bool decode(size_t index, V& v)
391 case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
392 case 2: type = 2; return v(ref_nested());
393 ref_nested().clear();
398 template<typename V> bool encode(size_t index, V& v) const
400 if(index != type) {return false;} return v(ref_nested());
407 struct Value_t : asn::typefield<true>
409 ~Value_t() {clear();}
410 size_t get_index() const {return type;}
411 RANfunctionID_Item& select_id_RANfunctionID_Item() { return set<RANfunctionID_Item>(1); }
412 RANfunctionID_Item const* get_id_RANfunctionID_Item() const { return get<RANfunctionID_Item>(1); }
413 bool is_unknown() const { return type == 2; }
418 case 1: var.destroy<RANfunctionID_Item>(); break;
420 type = 0; ref_nested().clear();
422 template<typename V> static inline void enumerate(V& v)
424 v.template operator()<RANfunctionID_Item>(1);
428 template<typename V> bool decode(size_t index, V& v)
433 case 1: v(select_id_RANfunctionID_Item()); return true;
434 case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
439 template<typename V> bool encode(size_t index, V& v) const
441 if(index != type) return false;
444 case 1: v(var.as<RANfunctionID_Item>()); return true;
450 template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
451 template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
454 char dummy1[sizeof(RANfunctionID_Item)];
457 asn::variant<sizeof(union_type)> var;
461 struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
463 size_t get_index() const {return type;}
464 bool is_unknown() const { return type == 2; }
465 void clear() {type = 0;}
466 void select_id_RANfunctionID_Item() { set(mandatory); type=1;}
467 X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
468 template<typename V> bool decode(V& v)
471 if(!v(ref_nested())) return false;
472 if(equal(mandatory)) { type = 1; return true; }
473 else { type = 2; return true;}
477 template<typename V> bool encode(V& v) const
479 return v(ref_nested());
483 template<typename V> bool decode(size_t index, V& v)
488 case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
489 case 2: type = 2; return v(ref_nested());
490 ref_nested().clear();
495 template<typename V> bool encode(size_t index, V& v) const
497 if(index != type) {return false;} return v(ref_nested());
507 RANfunctionIDcause-Item ::= SEQUENCE {
508 ranFunctionID RANfunctionID,
514 struct RANfunctionIDcause_Item : asn::sequence<2, 0, true, 0>
516 static constexpr const char* name() {return "RANfunctionIDcause-Item";}
517 using parent_t = asn::sequence<2, 0, true, 0>;
518 struct ranFunctionID_t : RANfunctionID
520 static constexpr const char* name() {return "ranFunctionID_t";}
521 using parent_t = RANfunctionID;
524 ranFunctionID_t& ref_ranFunctionID() {return ranFunctionID;}
525 ranFunctionID_t const& ref_ranFunctionID() const {return ranFunctionID;}
526 struct ricCause_t : RICcause
528 static constexpr const char* name() {return "ricCause_t";}
529 using parent_t = RICcause;
532 ricCause_t& ref_ricCause() {return ricCause;}
533 ricCause_t const& ref_ricCause() const {return ricCause;}
534 template<typename V> void decode(V& v)
540 template<typename V> void encode(V& v) const
548 ranFunctionID.clear();
553 ranFunctionID_t ranFunctionID;
558 RANfunctionIDcause-ItemIEs X2AP-PROTOCOL-IES ::= {
559 { ID id-RANfunctionIEcause-Item CRITICALITY ignore TYPE RANfunctionIDcause-Item PRESENCE mandatory },
564 struct RANfunctionIDcause_ItemIEs
566 struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
568 size_t get_index() const {return type;}
569 bool is_unknown() const { return type == 2; }
570 void clear() {type = 0;}
571 void select_id_RANfunctionIEcause_Item() { set(id_RANfunctionIEcause_Item); type=1;}
572 X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
573 template<typename V> bool decode(V& v)
576 if(!v(ref_nested())) return false;
577 if(equal(id_RANfunctionIEcause_Item)) { type = 1; return true; }
578 else { type = 2; return true;}
582 template<typename V> bool encode(V& v) const
584 return v(ref_nested());
588 template<typename V> bool decode(size_t index, V& v)
593 case 1: type = 1; if(v(ref_nested())) { return equal(id_RANfunctionIEcause_Item);} return false;
594 case 2: type = 2; return v(ref_nested());
595 ref_nested().clear();
600 template<typename V> bool encode(size_t index, V& v) const
602 if(index != type) {return false;} return v(ref_nested());
609 struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
611 size_t get_index() const {return type;}
612 bool is_unknown() const { return type == 2; }
613 void clear() {type = 0;}
614 void select_id_RANfunctionIEcause_Item() { set(ignore); type=1;}
615 X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
616 template<typename V> bool decode(V& v)
619 if(!v(ref_nested())) return false;
620 if(equal(ignore)) { type = 1; return true; }
621 else { type = 2; return true;}
625 template<typename V> bool encode(V& v) const
627 return v(ref_nested());
631 template<typename V> bool decode(size_t index, V& v)
636 case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
637 case 2: type = 2; return v(ref_nested());
638 ref_nested().clear();
643 template<typename V> bool encode(size_t index, V& v) const
645 if(index != type) {return false;} return v(ref_nested());
652 struct Value_t : asn::typefield<true>
654 ~Value_t() {clear();}
655 size_t get_index() const {return type;}
656 RANfunctionIDcause_Item& select_id_RANfunctionIEcause_Item() { return set<RANfunctionIDcause_Item>(1); }
657 RANfunctionIDcause_Item const* get_id_RANfunctionIEcause_Item() const { return get<RANfunctionIDcause_Item>(1); }
658 bool is_unknown() const { return type == 2; }
663 case 1: var.destroy<RANfunctionIDcause_Item>(); break;
665 type = 0; ref_nested().clear();
667 template<typename V> static inline void enumerate(V& v)
669 v.template operator()<RANfunctionIDcause_Item>(1);
673 template<typename V> bool decode(size_t index, V& v)
678 case 1: v(select_id_RANfunctionIEcause_Item()); return true;
679 case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
684 template<typename V> bool encode(size_t index, V& v) const
686 if(index != type) return false;
689 case 1: v(var.as<RANfunctionIDcause_Item>()); return true;
695 template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
696 template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
699 char dummy1[sizeof(RANfunctionIDcause_Item)];
702 asn::variant<sizeof(union_type)> var;
706 struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
708 size_t get_index() const {return type;}
709 bool is_unknown() const { return type == 2; }
710 void clear() {type = 0;}
711 void select_id_RANfunctionIEcause_Item() { set(mandatory); type=1;}
712 X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
713 template<typename V> bool decode(V& v)
716 if(!v(ref_nested())) return false;
717 if(equal(mandatory)) { type = 1; return true; }
718 else { type = 2; return true;}
722 template<typename V> bool encode(V& v) const
724 return v(ref_nested());
728 template<typename V> bool decode(size_t index, V& v)
733 case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
734 case 2: type = 2; return v(ref_nested());
735 ref_nested().clear();
740 template<typename V> bool encode(size_t index, V& v) const
742 if(index != type) {return false;} return v(ref_nested());
752 RANfunctions-List ::= SEQUENCE (SIZE(0..maxofRANfunctionID)) OF ProtocolIE-Single-Container { {RANfunction-ItemIEs} }
755 struct RANfunctions_List_elm : ProtocolIE_Single_Container<RANfunction_ItemIEs>
757 static constexpr const char* name() {return "RANfunctions_List_elm";}
758 using parent_t = ProtocolIE_Single_Container<RANfunction_ItemIEs>;
761 struct RANfunctions_List : asn::sequenceof<RANfunctions_List_elm>
763 static constexpr const char* name() {return "RANfunctions-List";}
764 using parent_t = asn::sequenceof<RANfunctions_List_elm>;
765 using constraint_t = asn::constraints<false,asn::span<0, maxofRANfunctionID >>;
769 RANfunctionsID-List ::= SEQUENCE (SIZE(0..maxofRANfunctionID)) OF ProtocolIE-Single-Container{{RANfunctionID-ItemIEs}}
772 struct RANfunctionsID_List_elm : ProtocolIE_Single_Container<RANfunctionID_ItemIEs>
774 static constexpr const char* name() {return "RANfunctionsID_List_elm";}
775 using parent_t = ProtocolIE_Single_Container<RANfunctionID_ItemIEs>;
778 struct RANfunctionsID_List : asn::sequenceof<RANfunctionsID_List_elm>
780 static constexpr const char* name() {return "RANfunctionsID-List";}
781 using parent_t = asn::sequenceof<RANfunctionsID_List_elm>;
782 using constraint_t = asn::constraints<false,asn::span<0, maxofRANfunctionID >>;
786 RANfunctionsIDcause-List ::= SEQUENCE (SIZE(0..maxofRANfunctionID)) OF ProtocolIE-Single-Container { {RANfunctionIDcause-ItemIEs} }
789 struct RANfunctionsIDcause_List_elm : ProtocolIE_Single_Container<RANfunctionIDcause_ItemIEs>
791 static constexpr const char* name() {return "RANfunctionsIDcause_List_elm";}
792 using parent_t = ProtocolIE_Single_Container<RANfunctionIDcause_ItemIEs>;
795 struct RANfunctionsIDcause_List : asn::sequenceof<RANfunctionsIDcause_List_elm>
797 static constexpr const char* name() {return "RANfunctionsIDcause-List";}
798 using parent_t = asn::sequenceof<RANfunctionsIDcause_List_elm>;
799 using constraint_t = asn::constraints<false,asn::span<0, maxofRANfunctionID >>;
803 RICaction-Admitted-Item ::= SEQUENCE {
804 ricActionID RICactionID,
809 struct RICaction_Admitted_Item : asn::sequence<1, 0, true, 0>
811 static constexpr const char* name() {return "RICaction-Admitted-Item";}
812 using parent_t = asn::sequence<1, 0, true, 0>;
813 struct ricActionID_t : RICactionID
815 static constexpr const char* name() {return "ricActionID_t";}
816 using parent_t = RICactionID;
819 ricActionID_t& ref_ricActionID() {return ricActionID;}
820 ricActionID_t const& ref_ricActionID() const {return ricActionID;}
821 template<typename V> void decode(V& v)
826 template<typename V> void encode(V& v) const
837 ricActionID_t ricActionID;
841 RICaction-Admitted-ItemIEs X2AP-PROTOCOL-IES ::= {
842 { ID id-RICaction-Admitted-Item CRITICALITY ignore TYPE RICaction-Admitted-Item PRESENCE mandatory },
847 struct RICaction_Admitted_ItemIEs
849 struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
851 size_t get_index() const {return type;}
852 bool is_unknown() const { return type == 2; }
853 void clear() {type = 0;}
854 void select_id_RICaction_Admitted_Item() { set(id_RICaction_Admitted_Item); type=1;}
855 X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
856 template<typename V> bool decode(V& v)
859 if(!v(ref_nested())) return false;
860 if(equal(id_RICaction_Admitted_Item)) { type = 1; return true; }
861 else { type = 2; return true;}
865 template<typename V> bool encode(V& v) const
867 return v(ref_nested());
871 template<typename V> bool decode(size_t index, V& v)
876 case 1: type = 1; if(v(ref_nested())) { return equal(id_RICaction_Admitted_Item);} return false;
877 case 2: type = 2; return v(ref_nested());
878 ref_nested().clear();
883 template<typename V> bool encode(size_t index, V& v) const
885 if(index != type) {return false;} return v(ref_nested());
892 struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
894 size_t get_index() const {return type;}
895 bool is_unknown() const { return type == 2; }
896 void clear() {type = 0;}
897 void select_id_RICaction_Admitted_Item() { set(ignore); type=1;}
898 X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
899 template<typename V> bool decode(V& v)
902 if(!v(ref_nested())) return false;
903 if(equal(ignore)) { type = 1; return true; }
904 else { type = 2; return true;}
908 template<typename V> bool encode(V& v) const
910 return v(ref_nested());
914 template<typename V> bool decode(size_t index, V& v)
919 case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
920 case 2: type = 2; return v(ref_nested());
921 ref_nested().clear();
926 template<typename V> bool encode(size_t index, V& v) const
928 if(index != type) {return false;} return v(ref_nested());
935 struct Value_t : asn::typefield<true>
937 ~Value_t() {clear();}
938 size_t get_index() const {return type;}
939 RICaction_Admitted_Item& select_id_RICaction_Admitted_Item() { return set<RICaction_Admitted_Item>(1); }
940 RICaction_Admitted_Item const* get_id_RICaction_Admitted_Item() const { return get<RICaction_Admitted_Item>(1); }
941 bool is_unknown() const { return type == 2; }
946 case 1: var.destroy<RICaction_Admitted_Item>(); break;
948 type = 0; ref_nested().clear();
950 template<typename V> static inline void enumerate(V& v)
952 v.template operator()<RICaction_Admitted_Item>(1);
956 template<typename V> bool decode(size_t index, V& v)
961 case 1: v(select_id_RICaction_Admitted_Item()); return true;
962 case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
967 template<typename V> bool encode(size_t index, V& v) const
969 if(index != type) return false;
972 case 1: v(var.as<RICaction_Admitted_Item>()); return true;
978 template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
979 template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
982 char dummy1[sizeof(RICaction_Admitted_Item)];
985 asn::variant<sizeof(union_type)> var;
989 struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
991 size_t get_index() const {return type;}
992 bool is_unknown() const { return type == 2; }
993 void clear() {type = 0;}
994 void select_id_RICaction_Admitted_Item() { set(mandatory); type=1;}
995 X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
996 template<typename V> bool decode(V& v)
999 if(!v(ref_nested())) return false;
1000 if(equal(mandatory)) { type = 1; return true; }
1001 else { type = 2; return true;}
1005 template<typename V> bool encode(V& v) const
1007 return v(ref_nested());
1011 template<typename V> bool decode(size_t index, V& v)
1016 case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
1017 case 2: type = 2; return v(ref_nested());
1018 ref_nested().clear();
1023 template<typename V> bool encode(size_t index, V& v) const
1025 if(index != type) {return false;} return v(ref_nested());
1035 RICaction-Admitted-List ::= SEQUENCE (SIZE(1..maxofRICactionID)) OF ProtocolIE-Single-Container{{RICaction-Admitted-ItemIEs}}
1038 struct RICaction_Admitted_List_elm : ProtocolIE_Single_Container<RICaction_Admitted_ItemIEs>
1040 static constexpr const char* name() {return "RICaction_Admitted_List_elm";}
1041 using parent_t = ProtocolIE_Single_Container<RICaction_Admitted_ItemIEs>;
1044 struct RICaction_Admitted_List : asn::sequenceof<RICaction_Admitted_List_elm>
1046 static constexpr const char* name() {return "RICaction-Admitted-List";}
1047 using parent_t = asn::sequenceof<RICaction_Admitted_List_elm>;
1048 using constraint_t = asn::constraints<false,asn::span<1, maxofRICactionID >>;
1052 RICaction-NotAdmitted-Item ::= SEQUENCE {
1053 ricActionID RICactionID,
1059 struct RICaction_NotAdmitted_Item : asn::sequence<2, 0, true, 0>
1061 static constexpr const char* name() {return "RICaction-NotAdmitted-Item";}
1062 using parent_t = asn::sequence<2, 0, true, 0>;
1063 struct ricActionID_t : RICactionID
1065 static constexpr const char* name() {return "ricActionID_t";}
1066 using parent_t = RICactionID;
1069 ricActionID_t& ref_ricActionID() {return ricActionID;}
1070 ricActionID_t const& ref_ricActionID() const {return ricActionID;}
1071 struct ricCause_t : RICcause
1073 static constexpr const char* name() {return "ricCause_t";}
1074 using parent_t = RICcause;
1077 ricCause_t& ref_ricCause() {return ricCause;}
1078 ricCause_t const& ref_ricCause() const {return ricCause;}
1079 template<typename V> void decode(V& v)
1085 template<typename V> void encode(V& v) const
1093 ricActionID.clear();
1098 ricActionID_t ricActionID;
1099 ricCause_t ricCause;
1103 RICaction-NotAdmitted-ItemIEs X2AP-PROTOCOL-IES ::= {
1104 { ID id-RICaction-NotAdmitted-Item CRITICALITY ignore TYPE RICaction-NotAdmitted-Item PRESENCE mandatory },
1109 struct RICaction_NotAdmitted_ItemIEs
1111 struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
1113 size_t get_index() const {return type;}
1114 bool is_unknown() const { return type == 2; }
1115 void clear() {type = 0;}
1116 void select_id_RICaction_NotAdmitted_Item() { set(id_RICaction_NotAdmitted_Item); type=1;}
1117 X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
1118 template<typename V> bool decode(V& v)
1121 if(!v(ref_nested())) return false;
1122 if(equal(id_RICaction_NotAdmitted_Item)) { type = 1; return true; }
1123 else { type = 2; return true;}
1127 template<typename V> bool encode(V& v) const
1129 return v(ref_nested());
1133 template<typename V> bool decode(size_t index, V& v)
1138 case 1: type = 1; if(v(ref_nested())) { return equal(id_RICaction_NotAdmitted_Item);} return false;
1139 case 2: type = 2; return v(ref_nested());
1140 ref_nested().clear();
1145 template<typename V> bool encode(size_t index, V& v) const
1147 if(index != type) {return false;} return v(ref_nested());
1154 struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
1156 size_t get_index() const {return type;}
1157 bool is_unknown() const { return type == 2; }
1158 void clear() {type = 0;}
1159 void select_id_RICaction_NotAdmitted_Item() { set(ignore); type=1;}
1160 X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
1161 template<typename V> bool decode(V& v)
1164 if(!v(ref_nested())) return false;
1165 if(equal(ignore)) { type = 1; return true; }
1166 else { type = 2; return true;}
1170 template<typename V> bool encode(V& v) const
1172 return v(ref_nested());
1176 template<typename V> bool decode(size_t index, V& v)
1181 case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
1182 case 2: type = 2; return v(ref_nested());
1183 ref_nested().clear();
1188 template<typename V> bool encode(size_t index, V& v) const
1190 if(index != type) {return false;} return v(ref_nested());
1197 struct Value_t : asn::typefield<true>
1199 ~Value_t() {clear();}
1200 size_t get_index() const {return type;}
1201 RICaction_NotAdmitted_Item& select_id_RICaction_NotAdmitted_Item() { return set<RICaction_NotAdmitted_Item>(1); }
1202 RICaction_NotAdmitted_Item const* get_id_RICaction_NotAdmitted_Item() const { return get<RICaction_NotAdmitted_Item>(1); }
1203 bool is_unknown() const { return type == 2; }
1208 case 1: var.destroy<RICaction_NotAdmitted_Item>(); break;
1210 type = 0; ref_nested().clear();
1212 template<typename V> static inline void enumerate(V& v)
1214 v.template operator()<RICaction_NotAdmitted_Item>(1);
1218 template<typename V> bool decode(size_t index, V& v)
1223 case 1: v(select_id_RICaction_NotAdmitted_Item()); return true;
1224 case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
1229 template<typename V> bool encode(size_t index, V& v) const
1231 if(index != type) return false;
1234 case 1: v(var.as<RICaction_NotAdmitted_Item>()); return true;
1240 template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
1241 template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
1244 char dummy1[sizeof(RICaction_NotAdmitted_Item)];
1247 asn::variant<sizeof(union_type)> var;
1251 struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
1253 size_t get_index() const {return type;}
1254 bool is_unknown() const { return type == 2; }
1255 void clear() {type = 0;}
1256 void select_id_RICaction_NotAdmitted_Item() { set(mandatory); type=1;}
1257 X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
1258 template<typename V> bool decode(V& v)
1261 if(!v(ref_nested())) return false;
1262 if(equal(mandatory)) { type = 1; return true; }
1263 else { type = 2; return true;}
1267 template<typename V> bool encode(V& v) const
1269 return v(ref_nested());
1273 template<typename V> bool decode(size_t index, V& v)
1278 case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
1279 case 2: type = 2; return v(ref_nested());
1280 ref_nested().clear();
1285 template<typename V> bool encode(size_t index, V& v) const
1287 if(index != type) {return false;} return v(ref_nested());
1297 RICaction-NotAdmitted-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-Single-Container { {RICaction-NotAdmitted-ItemIEs} }
1300 struct RICaction_NotAdmitted_List_elm : ProtocolIE_Single_Container<RICaction_NotAdmitted_ItemIEs>
1302 static constexpr const char* name() {return "RICaction_NotAdmitted_List_elm";}
1303 using parent_t = ProtocolIE_Single_Container<RICaction_NotAdmitted_ItemIEs>;
1306 struct RICaction_NotAdmitted_List : asn::sequenceof<RICaction_NotAdmitted_List_elm>
1308 static constexpr const char* name() {return "RICaction-NotAdmitted-List";}
1309 using parent_t = asn::sequenceof<RICaction_NotAdmitted_List_elm>;
1310 using constraint_t = asn::constraints<false,asn::span<0, maxofRICactionID >>;
1314 RICaction-ToBeSetup-Item ::= SEQUENCE {
1315 ricActionID RICactionID,
1316 ricActionType RICactionType,
1317 ricActionDefinition RICactionDefinition OPTIONAL,
1318 ricSubsequentAction RICsubsequentAction OPTIONAL,
1323 struct RICaction_ToBeSetup_Item : asn::sequence<4, 0, true, 2>
1325 static constexpr const char* name() {return "RICaction-ToBeSetup-Item";}
1326 using parent_t = asn::sequence<4, 0, true, 2>;
1327 struct ricActionID_t : RICactionID
1329 static constexpr const char* name() {return "ricActionID_t";}
1330 using parent_t = RICactionID;
1333 ricActionID_t& ref_ricActionID() {return ricActionID;}
1334 ricActionID_t const& ref_ricActionID() const {return ricActionID;}
1335 struct ricActionType_t : RICactionType
1337 static constexpr const char* name() {return "ricActionType_t";}
1338 using parent_t = RICactionType;
1341 ricActionType_t& ref_ricActionType() {return ricActionType;}
1342 ricActionType_t const& ref_ricActionType() const {return ricActionType;}
1343 struct ricActionDefinition_t : RICactionDefinition
1345 static constexpr const char* name() {return "ricActionDefinition_t";}
1346 using parent_t = RICactionDefinition;
1347 static constexpr bool optional = true;
1350 ricActionDefinition_t& set_ricActionDefinition() { ricActionDefinition.setpresent(true); return ricActionDefinition;}
1351 ricActionDefinition_t const* get_ricActionDefinition() const {return ricActionDefinition.is_valid() ? &ricActionDefinition : nullptr;}
1352 struct ricSubsequentAction_t : RICsubsequentAction
1354 static constexpr const char* name() {return "ricSubsequentAction_t";}
1355 using parent_t = RICsubsequentAction;
1356 static constexpr bool optional = true;
1359 ricSubsequentAction_t& set_ricSubsequentAction() { ricSubsequentAction.setpresent(true); return ricSubsequentAction;}
1360 ricSubsequentAction_t const* get_ricSubsequentAction() const {return ricSubsequentAction.is_valid() ? &ricSubsequentAction : nullptr;}
1361 template<typename V> void decode(V& v)
1365 v(ricActionDefinition);
1366 v(ricSubsequentAction);
1369 template<typename V> void encode(V& v) const
1373 v(ricActionDefinition);
1374 v(ricSubsequentAction);
1379 ricActionID.clear();
1380 ricActionType.clear();
1381 ricActionDefinition.clear();
1382 ricSubsequentAction.clear();
1386 ricActionID_t ricActionID;
1387 ricActionType_t ricActionType;
1388 ricActionDefinition_t ricActionDefinition;
1389 ricSubsequentAction_t ricSubsequentAction;
1393 RICaction-ToBeSetup-ItemIEs X2AP-PROTOCOL-IES ::= {
1394 { ID id-RICaction-ToBeSetup-Item CRITICALITY ignore TYPE RICaction-ToBeSetup-Item PRESENCE mandatory },
1399 struct RICaction_ToBeSetup_ItemIEs
1401 struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
1403 size_t get_index() const {return type;}
1404 bool is_unknown() const { return type == 2; }
1405 void clear() {type = 0;}
1406 void select_id_RICaction_ToBeSetup_Item() { set(id_RICaction_ToBeSetup_Item); type=1;}
1407 X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
1408 template<typename V> bool decode(V& v)
1411 if(!v(ref_nested())) return false;
1412 if(equal(id_RICaction_ToBeSetup_Item)) { type = 1; return true; }
1413 else { type = 2; return true;}
1417 template<typename V> bool encode(V& v) const
1419 return v(ref_nested());
1423 template<typename V> bool decode(size_t index, V& v)
1428 case 1: type = 1; if(v(ref_nested())) { return equal(id_RICaction_ToBeSetup_Item);} return false;
1429 case 2: type = 2; return v(ref_nested());
1430 ref_nested().clear();
1435 template<typename V> bool encode(size_t index, V& v) const
1437 if(index != type) {return false;} return v(ref_nested());
1444 struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
1446 size_t get_index() const {return type;}
1447 bool is_unknown() const { return type == 2; }
1448 void clear() {type = 0;}
1449 void select_id_RICaction_ToBeSetup_Item() { set(ignore); type=1;}
1450 X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
1451 template<typename V> bool decode(V& v)
1454 if(!v(ref_nested())) return false;
1455 if(equal(ignore)) { type = 1; return true; }
1456 else { type = 2; return true;}
1460 template<typename V> bool encode(V& v) const
1462 return v(ref_nested());
1466 template<typename V> bool decode(size_t index, V& v)
1471 case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
1472 case 2: type = 2; return v(ref_nested());
1473 ref_nested().clear();
1478 template<typename V> bool encode(size_t index, V& v) const
1480 if(index != type) {return false;} return v(ref_nested());
1487 struct Value_t : asn::typefield<true>
1489 ~Value_t() {clear();}
1490 size_t get_index() const {return type;}
1491 RICaction_ToBeSetup_Item& select_id_RICaction_ToBeSetup_Item() { return set<RICaction_ToBeSetup_Item>(1); }
1492 RICaction_ToBeSetup_Item const* get_id_RICaction_ToBeSetup_Item() const { return get<RICaction_ToBeSetup_Item>(1); }
1493 bool is_unknown() const { return type == 2; }
1498 case 1: var.destroy<RICaction_ToBeSetup_Item>(); break;
1500 type = 0; ref_nested().clear();
1502 template<typename V> static inline void enumerate(V& v)
1504 v.template operator()<RICaction_ToBeSetup_Item>(1);
1508 template<typename V> bool decode(size_t index, V& v)
1513 case 1: v(select_id_RICaction_ToBeSetup_Item()); return true;
1514 case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
1519 template<typename V> bool encode(size_t index, V& v) const
1521 if(index != type) return false;
1524 case 1: v(var.as<RICaction_ToBeSetup_Item>()); return true;
1530 template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
1531 template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
1534 char dummy1[sizeof(RICaction_ToBeSetup_Item)];
1537 asn::variant<sizeof(union_type)> var;
1541 struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
1543 size_t get_index() const {return type;}
1544 bool is_unknown() const { return type == 2; }
1545 void clear() {type = 0;}
1546 void select_id_RICaction_ToBeSetup_Item() { set(mandatory); type=1;}
1547 X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
1548 template<typename V> bool decode(V& v)
1551 if(!v(ref_nested())) return false;
1552 if(equal(mandatory)) { type = 1; return true; }
1553 else { type = 2; return true;}
1557 template<typename V> bool encode(V& v) const
1559 return v(ref_nested());
1563 template<typename V> bool decode(size_t index, V& v)
1568 case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
1569 case 2: type = 2; return v(ref_nested());
1570 ref_nested().clear();
1575 template<typename V> bool encode(size_t index, V& v) const
1577 if(index != type) {return false;} return v(ref_nested());
1587 RICactions-ToBeSetup-List ::= SEQUENCE (SIZE(1..maxofRICactionID)) OF ProtocolIE-Single-Container { {RICaction-ToBeSetup-ItemIEs} }
1590 struct RICactions_ToBeSetup_List_elm : ProtocolIE_Single_Container<RICaction_ToBeSetup_ItemIEs>
1592 static constexpr const char* name() {return "RICactions_ToBeSetup_List_elm";}
1593 using parent_t = ProtocolIE_Single_Container<RICaction_ToBeSetup_ItemIEs>;
1596 struct RICactions_ToBeSetup_List : asn::sequenceof<RICactions_ToBeSetup_List_elm>
1598 static constexpr const char* name() {return "RICactions-ToBeSetup-List";}
1599 using parent_t = asn::sequenceof<RICactions_ToBeSetup_List_elm>;
1600 using constraint_t = asn::constraints<false,asn::span<1, maxofRICactionID >>;
1604 RICcontrolAcknowledge-IEs X2AP-PROTOCOL-IES ::= {
1605 { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory}|
1606 { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory}|
1607 { ID id-RICcallProcessID CRITICALITY reject TYPE RICcallProcessID PRESENCE optional}|
1608 { ID id-RICcontrolStatus CRITICALITY reject TYPE RICcontrolStatus PRESENCE mandatory},
1613 struct RICcontrolAcknowledge_IEs
1615 struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
1617 size_t get_index() const {return type;}
1618 bool is_unknown() const { return type == 5; }
1619 void clear() {type = 0;}
1620 void select_id_RICrequestID() { set(id_RICrequestID); type=1;}
1621 void select_id_RANfunctionID() { set(id_RANfunctionID); type=2;}
1622 void select_id_RICcallProcessID() { set(id_RICcallProcessID); type=3;}
1623 void select_id_RICcontrolStatus() { set(id_RICcontrolStatus); type=4;}
1624 X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
1625 template<typename V> bool decode(V& v)
1628 if(!v(ref_nested())) return false;
1629 if(equal(id_RICrequestID)) { type = 1; return true; }
1630 else if(equal(id_RANfunctionID)) { type = 2; return true; }
1631 else if(equal(id_RICcallProcessID)) { type = 3; return true; }
1632 else if(equal(id_RICcontrolStatus)) { type = 4; return true; }
1633 else { type = 5; return true;}
1637 template<typename V> bool encode(V& v) const
1639 return v(ref_nested());
1643 template<typename V> bool decode(size_t index, V& v)
1648 case 1: type = 1; if(v(ref_nested())) { return equal(id_RICrequestID);} return false;
1649 case 2: type = 2; if(v(ref_nested())) { return equal(id_RANfunctionID);} return false;
1650 case 3: type = 3; if(v(ref_nested())) { return equal(id_RICcallProcessID);} return false;
1651 case 4: type = 4; if(v(ref_nested())) { return equal(id_RICcontrolStatus);} return false;
1652 case 5: type = 5; return v(ref_nested());
1653 ref_nested().clear();
1658 template<typename V> bool encode(size_t index, V& v) const
1660 if(index != type) {return false;} return v(ref_nested());
1667 struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
1669 size_t get_index() const {return type;}
1670 bool is_unknown() const { return type == 5; }
1671 void clear() {type = 0;}
1672 void select_id_RICrequestID() { set(reject); type=1;}
1673 void select_id_RANfunctionID() { set(reject); type=2;}
1674 void select_id_RICcallProcessID() { set(reject); type=3;}
1675 void select_id_RICcontrolStatus() { set(reject); type=4;}
1676 X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
1677 template<typename V> bool decode(V& v)
1680 if(!v(ref_nested())) return false;
1681 if(equal(reject)) { type = 1; return true; }
1682 else if(equal(reject)) { type = 2; return true; }
1683 else if(equal(reject)) { type = 3; return true; }
1684 else if(equal(reject)) { type = 4; return true; }
1685 else { type = 5; return true;}
1689 template<typename V> bool encode(V& v) const
1691 return v(ref_nested());
1695 template<typename V> bool decode(size_t index, V& v)
1700 case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
1701 case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
1702 case 3: type = 3; if(v(ref_nested())) { return equal(reject);} return false;
1703 case 4: type = 4; if(v(ref_nested())) { return equal(reject);} return false;
1704 case 5: type = 5; return v(ref_nested());
1705 ref_nested().clear();
1710 template<typename V> bool encode(size_t index, V& v) const
1712 if(index != type) {return false;} return v(ref_nested());
1719 struct Value_t : asn::typefield<true>
1721 ~Value_t() {clear();}
1722 size_t get_index() const {return type;}
1723 RICrequestID& select_id_RICrequestID() { return set<RICrequestID>(1); }
1724 RICrequestID const* get_id_RICrequestID() const { return get<RICrequestID>(1); }
1725 RANfunctionID& select_id_RANfunctionID() { return set<RANfunctionID>(2); }
1726 RANfunctionID const* get_id_RANfunctionID() const { return get<RANfunctionID>(2); }
1727 RICcallProcessID& select_id_RICcallProcessID() { return set<RICcallProcessID>(3); }
1728 RICcallProcessID const* get_id_RICcallProcessID() const { return get<RICcallProcessID>(3); }
1729 RICcontrolStatus& select_id_RICcontrolStatus() { return set<RICcontrolStatus>(4); }
1730 RICcontrolStatus const* get_id_RICcontrolStatus() const { return get<RICcontrolStatus>(4); }
1731 bool is_unknown() const { return type == 5; }
1736 case 1: var.destroy<RICrequestID>(); break;
1737 case 2: var.destroy<RANfunctionID>(); break;
1738 case 3: var.destroy<RICcallProcessID>(); break;
1739 case 4: var.destroy<RICcontrolStatus>(); break;
1741 type = 0; ref_nested().clear();
1743 template<typename V> static inline void enumerate(V& v)
1745 v.template operator()<RICrequestID>(1);
1746 v.template operator()<RANfunctionID>(2);
1747 v.template operator()<RICcallProcessID>(3);
1748 v.template operator()<RICcontrolStatus>(4);
1752 template<typename V> bool decode(size_t index, V& v)
1757 case 1: v(select_id_RICrequestID()); return true;
1758 case 2: v(select_id_RANfunctionID()); return true;
1759 case 3: v(select_id_RICcallProcessID()); return true;
1760 case 4: v(select_id_RICcontrolStatus()); return true;
1761 case 5: if(type != 5) {clear(); asn::base::set();} type = 5; return true;
1766 template<typename V> bool encode(size_t index, V& v) const
1768 if(index != type) return false;
1771 case 1: v(var.as<RICrequestID>()); return true;
1772 case 2: v(var.as<RANfunctionID>()); return true;
1773 case 3: v(var.as<RICcallProcessID>()); return true;
1774 case 4: v(var.as<RICcontrolStatus>()); return true;
1780 template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
1781 template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
1784 char dummy1[sizeof(RANfunctionID)];
1785 char dummy2[sizeof(RICcallProcessID)];
1786 char dummy3[sizeof(RICcontrolStatus)];
1787 char dummy4[sizeof(RICrequestID)];
1790 asn::variant<sizeof(union_type)> var;
1794 struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
1796 size_t get_index() const {return type;}
1797 bool is_unknown() const { return type == 5; }
1798 void clear() {type = 0;}
1799 void select_id_RICrequestID() { set(mandatory); type=1;}
1800 void select_id_RANfunctionID() { set(mandatory); type=2;}
1801 void select_id_RICcallProcessID() { set(optional); type=3;}
1802 void select_id_RICcontrolStatus() { set(mandatory); type=4;}
1803 X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
1804 template<typename V> bool decode(V& v)
1807 if(!v(ref_nested())) return false;
1808 if(equal(mandatory)) { type = 1; return true; }
1809 else if(equal(mandatory)) { type = 2; return true; }
1810 else if(equal(optional)) { type = 3; return true; }
1811 else if(equal(mandatory)) { type = 4; return true; }
1812 else { type = 5; return true;}
1816 template<typename V> bool encode(V& v) const
1818 return v(ref_nested());
1822 template<typename V> bool decode(size_t index, V& v)
1827 case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
1828 case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
1829 case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
1830 case 4: type = 4; if(v(ref_nested())) { return equal(mandatory);} return false;
1831 case 5: type = 5; return v(ref_nested());
1832 ref_nested().clear();
1837 template<typename V> bool encode(size_t index, V& v) const
1839 if(index != type) {return false;} return v(ref_nested());
1849 RICcontrolAcknowledge ::= SEQUENCE {
1850 protocolIEs ProtocolIE-Container {{RICcontrolAcknowledge-IEs}},
1855 struct RICcontrolAcknowledge : asn::sequence<1, 0, true, 0>
1857 static constexpr const char* name() {return "RICcontrolAcknowledge";}
1858 using parent_t = asn::sequence<1, 0, true, 0>;
1859 struct protocolIEs_t : ProtocolIE_Container<RICcontrolAcknowledge_IEs>
1861 static constexpr const char* name() {return "protocolIEs_t";}
1862 using parent_t = ProtocolIE_Container<RICcontrolAcknowledge_IEs>;
1865 protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
1866 protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
1867 template<typename V> void decode(V& v)
1872 template<typename V> void encode(V& v) const
1879 protocolIEs.clear();
1883 protocolIEs_t protocolIEs;
1887 RICcontrolFailure-IEs X2AP-PROTOCOL-IES ::= {
1888 { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory}|
1889 { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory}|
1890 { ID id-RICcallProcessID CRITICALITY reject TYPE RICcallProcessID PRESENCE optional}|
1891 { ID id-RICcause CRITICALITY reject TYPE RICcause PRESENCE mandatory},
1896 struct RICcontrolFailure_IEs
1898 struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
1900 size_t get_index() const {return type;}
1901 bool is_unknown() const { return type == 5; }
1902 void clear() {type = 0;}
1903 void select_id_RICrequestID() { set(id_RICrequestID); type=1;}
1904 void select_id_RANfunctionID() { set(id_RANfunctionID); type=2;}
1905 void select_id_RICcallProcessID() { set(id_RICcallProcessID); type=3;}
1906 void select_id_RICcause() { set(id_RICcause); type=4;}
1907 X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
1908 template<typename V> bool decode(V& v)
1911 if(!v(ref_nested())) return false;
1912 if(equal(id_RICrequestID)) { type = 1; return true; }
1913 else if(equal(id_RANfunctionID)) { type = 2; return true; }
1914 else if(equal(id_RICcallProcessID)) { type = 3; return true; }
1915 else if(equal(id_RICcause)) { type = 4; return true; }
1916 else { type = 5; return true;}
1920 template<typename V> bool encode(V& v) const
1922 return v(ref_nested());
1926 template<typename V> bool decode(size_t index, V& v)
1931 case 1: type = 1; if(v(ref_nested())) { return equal(id_RICrequestID);} return false;
1932 case 2: type = 2; if(v(ref_nested())) { return equal(id_RANfunctionID);} return false;
1933 case 3: type = 3; if(v(ref_nested())) { return equal(id_RICcallProcessID);} return false;
1934 case 4: type = 4; if(v(ref_nested())) { return equal(id_RICcause);} return false;
1935 case 5: type = 5; return v(ref_nested());
1936 ref_nested().clear();
1941 template<typename V> bool encode(size_t index, V& v) const
1943 if(index != type) {return false;} return v(ref_nested());
1950 struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
1952 size_t get_index() const {return type;}
1953 bool is_unknown() const { return type == 5; }
1954 void clear() {type = 0;}
1955 void select_id_RICrequestID() { set(reject); type=1;}
1956 void select_id_RANfunctionID() { set(reject); type=2;}
1957 void select_id_RICcallProcessID() { set(reject); type=3;}
1958 void select_id_RICcause() { set(reject); type=4;}
1959 X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
1960 template<typename V> bool decode(V& v)
1963 if(!v(ref_nested())) return false;
1964 if(equal(reject)) { type = 1; return true; }
1965 else if(equal(reject)) { type = 2; return true; }
1966 else if(equal(reject)) { type = 3; return true; }
1967 else if(equal(reject)) { type = 4; return true; }
1968 else { type = 5; return true;}
1972 template<typename V> bool encode(V& v) const
1974 return v(ref_nested());
1978 template<typename V> bool decode(size_t index, V& v)
1983 case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
1984 case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
1985 case 3: type = 3; if(v(ref_nested())) { return equal(reject);} return false;
1986 case 4: type = 4; if(v(ref_nested())) { return equal(reject);} return false;
1987 case 5: type = 5; return v(ref_nested());
1988 ref_nested().clear();
1993 template<typename V> bool encode(size_t index, V& v) const
1995 if(index != type) {return false;} return v(ref_nested());
2002 struct Value_t : asn::typefield<true>
2004 ~Value_t() {clear();}
2005 size_t get_index() const {return type;}
2006 RICrequestID& select_id_RICrequestID() { return set<RICrequestID>(1); }
2007 RICrequestID const* get_id_RICrequestID() const { return get<RICrequestID>(1); }
2008 RANfunctionID& select_id_RANfunctionID() { return set<RANfunctionID>(2); }
2009 RANfunctionID const* get_id_RANfunctionID() const { return get<RANfunctionID>(2); }
2010 RICcallProcessID& select_id_RICcallProcessID() { return set<RICcallProcessID>(3); }
2011 RICcallProcessID const* get_id_RICcallProcessID() const { return get<RICcallProcessID>(3); }
2012 RICcause& select_id_RICcause() { return set<RICcause>(4); }
2013 RICcause const* get_id_RICcause() const { return get<RICcause>(4); }
2014 bool is_unknown() const { return type == 5; }
2019 case 1: var.destroy<RICrequestID>(); break;
2020 case 2: var.destroy<RANfunctionID>(); break;
2021 case 3: var.destroy<RICcallProcessID>(); break;
2022 case 4: var.destroy<RICcause>(); break;
2024 type = 0; ref_nested().clear();
2026 template<typename V> static inline void enumerate(V& v)
2028 v.template operator()<RICrequestID>(1);
2029 v.template operator()<RANfunctionID>(2);
2030 v.template operator()<RICcallProcessID>(3);
2031 v.template operator()<RICcause>(4);
2035 template<typename V> bool decode(size_t index, V& v)
2040 case 1: v(select_id_RICrequestID()); return true;
2041 case 2: v(select_id_RANfunctionID()); return true;
2042 case 3: v(select_id_RICcallProcessID()); return true;
2043 case 4: v(select_id_RICcause()); return true;
2044 case 5: if(type != 5) {clear(); asn::base::set();} type = 5; return true;
2049 template<typename V> bool encode(size_t index, V& v) const
2051 if(index != type) return false;
2054 case 1: v(var.as<RICrequestID>()); return true;
2055 case 2: v(var.as<RANfunctionID>()); return true;
2056 case 3: v(var.as<RICcallProcessID>()); return true;
2057 case 4: v(var.as<RICcause>()); return true;
2063 template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
2064 template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
2067 char dummy1[sizeof(RANfunctionID)];
2068 char dummy2[sizeof(RICcallProcessID)];
2069 char dummy3[sizeof(RICcause)];
2070 char dummy4[sizeof(RICrequestID)];
2073 asn::variant<sizeof(union_type)> var;
2077 struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
2079 size_t get_index() const {return type;}
2080 bool is_unknown() const { return type == 5; }
2081 void clear() {type = 0;}
2082 void select_id_RICrequestID() { set(mandatory); type=1;}
2083 void select_id_RANfunctionID() { set(mandatory); type=2;}
2084 void select_id_RICcallProcessID() { set(optional); type=3;}
2085 void select_id_RICcause() { set(mandatory); type=4;}
2086 X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
2087 template<typename V> bool decode(V& v)
2090 if(!v(ref_nested())) return false;
2091 if(equal(mandatory)) { type = 1; return true; }
2092 else if(equal(mandatory)) { type = 2; return true; }
2093 else if(equal(optional)) { type = 3; return true; }
2094 else if(equal(mandatory)) { type = 4; return true; }
2095 else { type = 5; return true;}
2099 template<typename V> bool encode(V& v) const
2101 return v(ref_nested());
2105 template<typename V> bool decode(size_t index, V& v)
2110 case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
2111 case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
2112 case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
2113 case 4: type = 4; if(v(ref_nested())) { return equal(mandatory);} return false;
2114 case 5: type = 5; return v(ref_nested());
2115 ref_nested().clear();
2120 template<typename V> bool encode(size_t index, V& v) const
2122 if(index != type) {return false;} return v(ref_nested());
2132 RICcontrolFailure ::= SEQUENCE {
2133 protocolIEs ProtocolIE-Container {{RICcontrolFailure-IEs}},
2138 struct RICcontrolFailure : asn::sequence<1, 0, true, 0>
2140 static constexpr const char* name() {return "RICcontrolFailure";}
2141 using parent_t = asn::sequence<1, 0, true, 0>;
2142 struct protocolIEs_t : ProtocolIE_Container<RICcontrolFailure_IEs>
2144 static constexpr const char* name() {return "protocolIEs_t";}
2145 using parent_t = ProtocolIE_Container<RICcontrolFailure_IEs>;
2148 protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
2149 protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
2150 template<typename V> void decode(V& v)
2155 template<typename V> void encode(V& v) const
2162 protocolIEs.clear();
2166 protocolIEs_t protocolIEs;
2170 RICcontrolRequest-IEs X2AP-PROTOCOL-IES ::= {
2171 { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory}|
2172 { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory}|
2173 { ID id-RICcallProcessID CRITICALITY reject TYPE RICcallProcessID PRESENCE optional}|
2174 { ID id-RICcontrolHeader CRITICALITY reject TYPE RICcontrolHeader PRESENCE mandatory}|
2175 { ID id-RICcontrolMessage CRITICALITY reject TYPE RICcontrolMessage PRESENCE mandatory}|
2176 { ID id-RICcontrolAckRequest CRITICALITY reject TYPE RICcontrolAckRequest PRESENCE optional},
2181 struct RICcontrolRequest_IEs
2183 struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
2185 size_t get_index() const {return type;}
2186 bool is_unknown() const { return type == 7; }
2187 void clear() {type = 0;}
2188 void select_id_RICrequestID() { set(id_RICrequestID); type=1;}
2189 void select_id_RANfunctionID() { set(id_RANfunctionID); type=2;}
2190 void select_id_RICcallProcessID() { set(id_RICcallProcessID); type=3;}
2191 void select_id_RICcontrolHeader() { set(id_RICcontrolHeader); type=4;}
2192 void select_id_RICcontrolMessage() { set(id_RICcontrolMessage); type=5;}
2193 void select_id_RICcontrolAckRequest() { set(id_RICcontrolAckRequest); type=6;}
2194 X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
2195 template<typename V> bool decode(V& v)
2198 if(!v(ref_nested())) return false;
2199 if(equal(id_RICrequestID)) { type = 1; return true; }
2200 else if(equal(id_RANfunctionID)) { type = 2; return true; }
2201 else if(equal(id_RICcallProcessID)) { type = 3; return true; }
2202 else if(equal(id_RICcontrolHeader)) { type = 4; return true; }
2203 else if(equal(id_RICcontrolMessage)) { type = 5; return true; }
2204 else if(equal(id_RICcontrolAckRequest)) { type = 6; return true; }
2205 else { type = 7; return true;}
2209 template<typename V> bool encode(V& v) const
2211 return v(ref_nested());
2215 template<typename V> bool decode(size_t index, V& v)
2220 case 1: type = 1; if(v(ref_nested())) { return equal(id_RICrequestID);} return false;
2221 case 2: type = 2; if(v(ref_nested())) { return equal(id_RANfunctionID);} return false;
2222 case 3: type = 3; if(v(ref_nested())) { return equal(id_RICcallProcessID);} return false;
2223 case 4: type = 4; if(v(ref_nested())) { return equal(id_RICcontrolHeader);} return false;
2224 case 5: type = 5; if(v(ref_nested())) { return equal(id_RICcontrolMessage);} return false;
2225 case 6: type = 6; if(v(ref_nested())) { return equal(id_RICcontrolAckRequest);} return false;
2226 case 7: type = 7; return v(ref_nested());
2227 ref_nested().clear();
2232 template<typename V> bool encode(size_t index, V& v) const
2234 if(index != type) {return false;} return v(ref_nested());
2241 struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
2243 size_t get_index() const {return type;}
2244 bool is_unknown() const { return type == 7; }
2245 void clear() {type = 0;}
2246 void select_id_RICrequestID() { set(reject); type=1;}
2247 void select_id_RANfunctionID() { set(reject); type=2;}
2248 void select_id_RICcallProcessID() { set(reject); type=3;}
2249 void select_id_RICcontrolHeader() { set(reject); type=4;}
2250 void select_id_RICcontrolMessage() { set(reject); type=5;}
2251 void select_id_RICcontrolAckRequest() { set(reject); type=6;}
2252 X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
2253 template<typename V> bool decode(V& v)
2256 if(!v(ref_nested())) return false;
2257 if(equal(reject)) { type = 1; return true; }
2258 else if(equal(reject)) { type = 2; return true; }
2259 else if(equal(reject)) { type = 3; return true; }
2260 else if(equal(reject)) { type = 4; return true; }
2261 else if(equal(reject)) { type = 5; return true; }
2262 else if(equal(reject)) { type = 6; return true; }
2263 else { type = 7; return true;}
2267 template<typename V> bool encode(V& v) const
2269 return v(ref_nested());
2273 template<typename V> bool decode(size_t index, V& v)
2278 case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
2279 case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
2280 case 3: type = 3; if(v(ref_nested())) { return equal(reject);} return false;
2281 case 4: type = 4; if(v(ref_nested())) { return equal(reject);} return false;
2282 case 5: type = 5; if(v(ref_nested())) { return equal(reject);} return false;
2283 case 6: type = 6; if(v(ref_nested())) { return equal(reject);} return false;
2284 case 7: type = 7; return v(ref_nested());
2285 ref_nested().clear();
2290 template<typename V> bool encode(size_t index, V& v) const
2292 if(index != type) {return false;} return v(ref_nested());
2299 struct Value_t : asn::typefield<true>
2301 ~Value_t() {clear();}
2302 size_t get_index() const {return type;}
2303 RICrequestID& select_id_RICrequestID() { return set<RICrequestID>(1); }
2304 RICrequestID const* get_id_RICrequestID() const { return get<RICrequestID>(1); }
2305 RANfunctionID& select_id_RANfunctionID() { return set<RANfunctionID>(2); }
2306 RANfunctionID const* get_id_RANfunctionID() const { return get<RANfunctionID>(2); }
2307 RICcallProcessID& select_id_RICcallProcessID() { return set<RICcallProcessID>(3); }
2308 RICcallProcessID const* get_id_RICcallProcessID() const { return get<RICcallProcessID>(3); }
2309 RICcontrolHeader& select_id_RICcontrolHeader() { return set<RICcontrolHeader>(4); }
2310 RICcontrolHeader const* get_id_RICcontrolHeader() const { return get<RICcontrolHeader>(4); }
2311 RICcontrolMessage& select_id_RICcontrolMessage() { return set<RICcontrolMessage>(5); }
2312 RICcontrolMessage const* get_id_RICcontrolMessage() const { return get<RICcontrolMessage>(5); }
2313 RICcontrolAckRequest& select_id_RICcontrolAckRequest() { return set<RICcontrolAckRequest>(6); }
2314 RICcontrolAckRequest const* get_id_RICcontrolAckRequest() const { return get<RICcontrolAckRequest>(6); }
2315 bool is_unknown() const { return type == 7; }
2320 case 1: var.destroy<RICrequestID>(); break;
2321 case 2: var.destroy<RANfunctionID>(); break;
2322 case 3: var.destroy<RICcallProcessID>(); break;
2323 case 4: var.destroy<RICcontrolHeader>(); break;
2324 case 5: var.destroy<RICcontrolMessage>(); break;
2325 case 6: var.destroy<RICcontrolAckRequest>(); break;
2327 type = 0; ref_nested().clear();
2329 template<typename V> static inline void enumerate(V& v)
2331 v.template operator()<RICrequestID>(1);
2332 v.template operator()<RANfunctionID>(2);
2333 v.template operator()<RICcallProcessID>(3);
2334 v.template operator()<RICcontrolHeader>(4);
2335 v.template operator()<RICcontrolMessage>(5);
2336 v.template operator()<RICcontrolAckRequest>(6);
2340 template<typename V> bool decode(size_t index, V& v)
2345 case 1: v(select_id_RICrequestID()); return true;
2346 case 2: v(select_id_RANfunctionID()); return true;
2347 case 3: v(select_id_RICcallProcessID()); return true;
2348 case 4: v(select_id_RICcontrolHeader()); return true;
2349 case 5: v(select_id_RICcontrolMessage()); return true;
2350 case 6: v(select_id_RICcontrolAckRequest()); return true;
2351 case 7: if(type != 7) {clear(); asn::base::set();} type = 7; return true;
2356 template<typename V> bool encode(size_t index, V& v) const
2358 if(index != type) return false;
2361 case 1: v(var.as<RICrequestID>()); return true;
2362 case 2: v(var.as<RANfunctionID>()); return true;
2363 case 3: v(var.as<RICcallProcessID>()); return true;
2364 case 4: v(var.as<RICcontrolHeader>()); return true;
2365 case 5: v(var.as<RICcontrolMessage>()); return true;
2366 case 6: v(var.as<RICcontrolAckRequest>()); return true;
2372 template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
2373 template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
2376 char dummy1[sizeof(RANfunctionID)];
2377 char dummy2[sizeof(RICcallProcessID)];
2378 char dummy3[sizeof(RICcontrolAckRequest)];
2379 char dummy4[sizeof(RICcontrolHeader)];
2380 char dummy5[sizeof(RICcontrolMessage)];
2381 char dummy6[sizeof(RICrequestID)];
2384 asn::variant<sizeof(union_type)> var;
2388 struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
2390 size_t get_index() const {return type;}
2391 bool is_unknown() const { return type == 7; }
2392 void clear() {type = 0;}
2393 void select_id_RICrequestID() { set(mandatory); type=1;}
2394 void select_id_RANfunctionID() { set(mandatory); type=2;}
2395 void select_id_RICcallProcessID() { set(optional); type=3;}
2396 void select_id_RICcontrolHeader() { set(mandatory); type=4;}
2397 void select_id_RICcontrolMessage() { set(mandatory); type=5;}
2398 void select_id_RICcontrolAckRequest() { set(optional); type=6;}
2399 X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
2400 template<typename V> bool decode(V& v)
2403 if(!v(ref_nested())) return false;
2404 if(equal(mandatory)) { type = 1; return true; }
2405 else if(equal(mandatory)) { type = 2; return true; }
2406 else if(equal(optional)) { type = 3; return true; }
2407 else if(equal(mandatory)) { type = 4; return true; }
2408 else if(equal(mandatory)) { type = 5; return true; }
2409 else if(equal(optional)) { type = 6; return true; }
2410 else { type = 7; return true;}
2414 template<typename V> bool encode(V& v) const
2416 return v(ref_nested());
2420 template<typename V> bool decode(size_t index, V& v)
2425 case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
2426 case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
2427 case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
2428 case 4: type = 4; if(v(ref_nested())) { return equal(mandatory);} return false;
2429 case 5: type = 5; if(v(ref_nested())) { return equal(mandatory);} return false;
2430 case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false;
2431 case 7: type = 7; return v(ref_nested());
2432 ref_nested().clear();
2437 template<typename V> bool encode(size_t index, V& v) const
2439 if(index != type) {return false;} return v(ref_nested());
2449 RICcontrolRequest ::= SEQUENCE {
2450 protocolIEs ProtocolIE-Container {{RICcontrolRequest-IEs}},
2455 struct RICcontrolRequest : asn::sequence<1, 0, true, 0>
2457 static constexpr const char* name() {return "RICcontrolRequest";}
2458 using parent_t = asn::sequence<1, 0, true, 0>;
2459 struct protocolIEs_t : ProtocolIE_Container<RICcontrolRequest_IEs>
2461 static constexpr const char* name() {return "protocolIEs_t";}
2462 using parent_t = ProtocolIE_Container<RICcontrolRequest_IEs>;
2465 protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
2466 protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
2467 template<typename V> void decode(V& v)
2472 template<typename V> void encode(V& v) const
2479 protocolIEs.clear();
2483 protocolIEs_t protocolIEs;
2487 RICindication-IEs X2AP-PROTOCOL-IES ::= {
2488 { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory}|
2489 { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory}|
2490 { ID id-RICactionID CRITICALITY reject TYPE RICactionID PRESENCE mandatory}|
2491 { ID id-RICindicationSN CRITICALITY reject TYPE RICindicationSN PRESENCE mandatory}|
2492 { ID id-RICindicationType CRITICALITY reject TYPE RICindicationType PRESENCE mandatory}|
2493 { ID id-RICindicationHeader CRITICALITY reject TYPE RICindicationHeader PRESENCE mandatory}|
2494 { ID id-RICindicationMessage CRITICALITY reject TYPE RICindicationMessage PRESENCE mandatory} |
2495 { ID id-RICcallProcessID CRITICALITY reject TYPE RICcallProcessID PRESENCE optional},
2500 struct RICindication_IEs
2502 struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
2504 size_t get_index() const {return type;}
2505 bool is_unknown() const { return type == 9; }
2506 void clear() {type = 0;}
2507 void select_id_RICrequestID() { set(id_RICrequestID); type=1;}
2508 void select_id_RANfunctionID() { set(id_RANfunctionID); type=2;}
2509 void select_id_RICactionID() { set(id_RICactionID); type=3;}
2510 void select_id_RICindicationSN() { set(id_RICindicationSN); type=4;}
2511 void select_id_RICindicationType() { set(id_RICindicationType); type=5;}
2512 void select_id_RICindicationHeader() { set(id_RICindicationHeader); type=6;}
2513 void select_id_RICindicationMessage() { set(id_RICindicationMessage); type=7;}
2514 void select_id_RICcallProcessID() { set(id_RICcallProcessID); type=8;}
2515 X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
2516 template<typename V> bool decode(V& v)
2519 if(!v(ref_nested())) return false;
2520 if(equal(id_RICrequestID)) { type = 1; return true; }
2521 else if(equal(id_RANfunctionID)) { type = 2; return true; }
2522 else if(equal(id_RICactionID)) { type = 3; return true; }
2523 else if(equal(id_RICindicationSN)) { type = 4; return true; }
2524 else if(equal(id_RICindicationType)) { type = 5; return true; }
2525 else if(equal(id_RICindicationHeader)) { type = 6; return true; }
2526 else if(equal(id_RICindicationMessage)) { type = 7; return true; }
2527 else if(equal(id_RICcallProcessID)) { type = 8; return true; }
2528 else { type = 9; return true;}
2532 template<typename V> bool encode(V& v) const
2534 return v(ref_nested());
2538 template<typename V> bool decode(size_t index, V& v)
2543 case 1: type = 1; if(v(ref_nested())) { return equal(id_RICrequestID);} return false;
2544 case 2: type = 2; if(v(ref_nested())) { return equal(id_RANfunctionID);} return false;
2545 case 3: type = 3; if(v(ref_nested())) { return equal(id_RICactionID);} return false;
2546 case 4: type = 4; if(v(ref_nested())) { return equal(id_RICindicationSN);} return false;
2547 case 5: type = 5; if(v(ref_nested())) { return equal(id_RICindicationType);} return false;
2548 case 6: type = 6; if(v(ref_nested())) { return equal(id_RICindicationHeader);} return false;
2549 case 7: type = 7; if(v(ref_nested())) { return equal(id_RICindicationMessage);} return false;
2550 case 8: type = 8; if(v(ref_nested())) { return equal(id_RICcallProcessID);} return false;
2551 case 9: type = 9; return v(ref_nested());
2552 ref_nested().clear();
2557 template<typename V> bool encode(size_t index, V& v) const
2559 if(index != type) {return false;} return v(ref_nested());
2566 struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
2568 size_t get_index() const {return type;}
2569 bool is_unknown() const { return type == 9; }
2570 void clear() {type = 0;}
2571 void select_id_RICrequestID() { set(reject); type=1;}
2572 void select_id_RANfunctionID() { set(reject); type=2;}
2573 void select_id_RICactionID() { set(reject); type=3;}
2574 void select_id_RICindicationSN() { set(reject); type=4;}
2575 void select_id_RICindicationType() { set(reject); type=5;}
2576 void select_id_RICindicationHeader() { set(reject); type=6;}
2577 void select_id_RICindicationMessage() { set(reject); type=7;}
2578 void select_id_RICcallProcessID() { set(reject); type=8;}
2579 X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
2580 template<typename V> bool decode(V& v)
2583 if(!v(ref_nested())) return false;
2584 if(equal(reject)) { type = 1; return true; }
2585 else if(equal(reject)) { type = 2; return true; }
2586 else if(equal(reject)) { type = 3; return true; }
2587 else if(equal(reject)) { type = 4; return true; }
2588 else if(equal(reject)) { type = 5; return true; }
2589 else if(equal(reject)) { type = 6; return true; }
2590 else if(equal(reject)) { type = 7; return true; }
2591 else if(equal(reject)) { type = 8; return true; }
2592 else { type = 9; return true;}
2596 template<typename V> bool encode(V& v) const
2598 return v(ref_nested());
2602 template<typename V> bool decode(size_t index, V& v)
2607 case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
2608 case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
2609 case 3: type = 3; if(v(ref_nested())) { return equal(reject);} return false;
2610 case 4: type = 4; if(v(ref_nested())) { return equal(reject);} return false;
2611 case 5: type = 5; if(v(ref_nested())) { return equal(reject);} return false;
2612 case 6: type = 6; if(v(ref_nested())) { return equal(reject);} return false;
2613 case 7: type = 7; if(v(ref_nested())) { return equal(reject);} return false;
2614 case 8: type = 8; if(v(ref_nested())) { return equal(reject);} return false;
2615 case 9: type = 9; return v(ref_nested());
2616 ref_nested().clear();
2621 template<typename V> bool encode(size_t index, V& v) const
2623 if(index != type) {return false;} return v(ref_nested());
2630 struct Value_t : asn::typefield<true>
2632 ~Value_t() {clear();}
2633 size_t get_index() const {return type;}
2634 RICrequestID& select_id_RICrequestID() { return set<RICrequestID>(1); }
2635 RICrequestID const* get_id_RICrequestID() const { return get<RICrequestID>(1); }
2636 RANfunctionID& select_id_RANfunctionID() { return set<RANfunctionID>(2); }
2637 RANfunctionID const* get_id_RANfunctionID() const { return get<RANfunctionID>(2); }
2638 RICactionID& select_id_RICactionID() { return set<RICactionID>(3); }
2639 RICactionID const* get_id_RICactionID() const { return get<RICactionID>(3); }
2640 RICindicationSN& select_id_RICindicationSN() { return set<RICindicationSN>(4); }
2641 RICindicationSN const* get_id_RICindicationSN() const { return get<RICindicationSN>(4); }
2642 RICindicationType& select_id_RICindicationType() { return set<RICindicationType>(5); }
2643 RICindicationType const* get_id_RICindicationType() const { return get<RICindicationType>(5); }
2644 RICindicationHeader& select_id_RICindicationHeader() { return set<RICindicationHeader>(6); }
2645 RICindicationHeader const* get_id_RICindicationHeader() const { return get<RICindicationHeader>(6); }
2646 RICindicationMessage& select_id_RICindicationMessage() { return set<RICindicationMessage>(7); }
2647 RICindicationMessage const* get_id_RICindicationMessage() const { return get<RICindicationMessage>(7); }
2648 RICcallProcessID& select_id_RICcallProcessID() { return set<RICcallProcessID>(8); }
2649 RICcallProcessID const* get_id_RICcallProcessID() const { return get<RICcallProcessID>(8); }
2650 bool is_unknown() const { return type == 9; }
2655 case 1: var.destroy<RICrequestID>(); break;
2656 case 2: var.destroy<RANfunctionID>(); break;
2657 case 3: var.destroy<RICactionID>(); break;
2658 case 4: var.destroy<RICindicationSN>(); break;
2659 case 5: var.destroy<RICindicationType>(); break;
2660 case 6: var.destroy<RICindicationHeader>(); break;
2661 case 7: var.destroy<RICindicationMessage>(); break;
2662 case 8: var.destroy<RICcallProcessID>(); break;
2664 type = 0; ref_nested().clear();
2666 template<typename V> static inline void enumerate(V& v)
2668 v.template operator()<RICrequestID>(1);
2669 v.template operator()<RANfunctionID>(2);
2670 v.template operator()<RICactionID>(3);
2671 v.template operator()<RICindicationSN>(4);
2672 v.template operator()<RICindicationType>(5);
2673 v.template operator()<RICindicationHeader>(6);
2674 v.template operator()<RICindicationMessage>(7);
2675 v.template operator()<RICcallProcessID>(8);
2679 template<typename V> bool decode(size_t index, V& v)
2684 case 1: v(select_id_RICrequestID()); return true;
2685 case 2: v(select_id_RANfunctionID()); return true;
2686 case 3: v(select_id_RICactionID()); return true;
2687 case 4: v(select_id_RICindicationSN()); return true;
2688 case 5: v(select_id_RICindicationType()); return true;
2689 case 6: v(select_id_RICindicationHeader()); return true;
2690 case 7: v(select_id_RICindicationMessage()); return true;
2691 case 8: v(select_id_RICcallProcessID()); return true;
2692 case 9: if(type != 9) {clear(); asn::base::set();} type = 9; return true;
2697 template<typename V> bool encode(size_t index, V& v) const
2699 if(index != type) return false;
2702 case 1: v(var.as<RICrequestID>()); return true;
2703 case 2: v(var.as<RANfunctionID>()); return true;
2704 case 3: v(var.as<RICactionID>()); return true;
2705 case 4: v(var.as<RICindicationSN>()); return true;
2706 case 5: v(var.as<RICindicationType>()); return true;
2707 case 6: v(var.as<RICindicationHeader>()); return true;
2708 case 7: v(var.as<RICindicationMessage>()); return true;
2709 case 8: v(var.as<RICcallProcessID>()); return true;
2715 template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
2716 template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
2719 char dummy1[sizeof(RANfunctionID)];
2720 char dummy2[sizeof(RICactionID)];
2721 char dummy3[sizeof(RICcallProcessID)];
2722 char dummy4[sizeof(RICindicationHeader)];
2723 char dummy5[sizeof(RICindicationMessage)];
2724 char dummy6[sizeof(RICindicationSN)];
2725 char dummy7[sizeof(RICindicationType)];
2726 char dummy8[sizeof(RICrequestID)];
2729 asn::variant<sizeof(union_type)> var;
2733 struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
2735 size_t get_index() const {return type;}
2736 bool is_unknown() const { return type == 9; }
2737 void clear() {type = 0;}
2738 void select_id_RICrequestID() { set(mandatory); type=1;}
2739 void select_id_RANfunctionID() { set(mandatory); type=2;}
2740 void select_id_RICactionID() { set(mandatory); type=3;}
2741 void select_id_RICindicationSN() { set(mandatory); type=4;}
2742 void select_id_RICindicationType() { set(mandatory); type=5;}
2743 void select_id_RICindicationHeader() { set(mandatory); type=6;}
2744 void select_id_RICindicationMessage() { set(mandatory); type=7;}
2745 void select_id_RICcallProcessID() { set(optional); type=8;}
2746 X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
2747 template<typename V> bool decode(V& v)
2750 if(!v(ref_nested())) return false;
2751 if(equal(mandatory)) { type = 1; return true; }
2752 else if(equal(mandatory)) { type = 2; return true; }
2753 else if(equal(mandatory)) { type = 3; return true; }
2754 else if(equal(mandatory)) { type = 4; return true; }
2755 else if(equal(mandatory)) { type = 5; return true; }
2756 else if(equal(mandatory)) { type = 6; return true; }
2757 else if(equal(mandatory)) { type = 7; return true; }
2758 else if(equal(optional)) { type = 8; return true; }
2759 else { type = 9; return true;}
2763 template<typename V> bool encode(V& v) const
2765 return v(ref_nested());
2769 template<typename V> bool decode(size_t index, V& v)
2774 case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
2775 case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
2776 case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
2777 case 4: type = 4; if(v(ref_nested())) { return equal(mandatory);} return false;
2778 case 5: type = 5; if(v(ref_nested())) { return equal(mandatory);} return false;
2779 case 6: type = 6; if(v(ref_nested())) { return equal(mandatory);} return false;
2780 case 7: type = 7; if(v(ref_nested())) { return equal(mandatory);} return false;
2781 case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false;
2782 case 9: type = 9; return v(ref_nested());
2783 ref_nested().clear();
2788 template<typename V> bool encode(size_t index, V& v) const
2790 if(index != type) {return false;} return v(ref_nested());
2800 RICindication ::= SEQUENCE {
2801 protocolIEs ProtocolIE-Container {{RICindication-IEs}},
2806 struct RICindication : asn::sequence<1, 0, true, 0>
2808 static constexpr const char* name() {return "RICindication";}
2809 using parent_t = asn::sequence<1, 0, true, 0>;
2810 struct protocolIEs_t : ProtocolIE_Container<RICindication_IEs>
2812 static constexpr const char* name() {return "protocolIEs_t";}
2813 using parent_t = ProtocolIE_Container<RICindication_IEs>;
2816 protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
2817 protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
2818 template<typename V> void decode(V& v)
2823 template<typename V> void encode(V& v) const
2830 protocolIEs.clear();
2834 protocolIEs_t protocolIEs;
2838 RICserviceQuery-IEs X2AP-PROTOCOL-IES ::= {
2839 { ID id-RANfunctionsAccepted CRITICALITY reject TYPE RANfunctionsID-List PRESENCE optional},
2844 struct RICserviceQuery_IEs
2846 struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
2848 size_t get_index() const {return type;}
2849 bool is_unknown() const { return type == 2; }
2850 void clear() {type = 0;}
2851 void select_id_RANfunctionsAccepted() { set(id_RANfunctionsAccepted); type=1;}
2852 X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
2853 template<typename V> bool decode(V& v)
2856 if(!v(ref_nested())) return false;
2857 if(equal(id_RANfunctionsAccepted)) { type = 1; return true; }
2858 else { type = 2; return true;}
2862 template<typename V> bool encode(V& v) const
2864 return v(ref_nested());
2868 template<typename V> bool decode(size_t index, V& v)
2873 case 1: type = 1; if(v(ref_nested())) { return equal(id_RANfunctionsAccepted);} return false;
2874 case 2: type = 2; return v(ref_nested());
2875 ref_nested().clear();
2880 template<typename V> bool encode(size_t index, V& v) const
2882 if(index != type) {return false;} return v(ref_nested());
2889 struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
2891 size_t get_index() const {return type;}
2892 bool is_unknown() const { return type == 2; }
2893 void clear() {type = 0;}
2894 void select_id_RANfunctionsAccepted() { set(reject); type=1;}
2895 X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
2896 template<typename V> bool decode(V& v)
2899 if(!v(ref_nested())) return false;
2900 if(equal(reject)) { type = 1; return true; }
2901 else { type = 2; return true;}
2905 template<typename V> bool encode(V& v) const
2907 return v(ref_nested());
2911 template<typename V> bool decode(size_t index, V& v)
2916 case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
2917 case 2: type = 2; return v(ref_nested());
2918 ref_nested().clear();
2923 template<typename V> bool encode(size_t index, V& v) const
2925 if(index != type) {return false;} return v(ref_nested());
2932 struct Value_t : asn::typefield<true>
2934 ~Value_t() {clear();}
2935 size_t get_index() const {return type;}
2936 RANfunctionsID_List& select_id_RANfunctionsAccepted() { return set<RANfunctionsID_List>(1); }
2937 RANfunctionsID_List const* get_id_RANfunctionsAccepted() const { return get<RANfunctionsID_List>(1); }
2938 bool is_unknown() const { return type == 2; }
2943 case 1: var.destroy<RANfunctionsID_List>(); break;
2945 type = 0; ref_nested().clear();
2947 template<typename V> static inline void enumerate(V& v)
2949 v.template operator()<RANfunctionsID_List>(1);
2953 template<typename V> bool decode(size_t index, V& v)
2958 case 1: v(select_id_RANfunctionsAccepted()); return true;
2959 case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
2964 template<typename V> bool encode(size_t index, V& v) const
2966 if(index != type) return false;
2969 case 1: v(var.as<RANfunctionsID_List>()); return true;
2975 template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
2976 template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
2979 char dummy1[sizeof(RANfunctionsID_List)];
2982 asn::variant<sizeof(union_type)> var;
2986 struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
2988 size_t get_index() const {return type;}
2989 bool is_unknown() const { return type == 2; }
2990 void clear() {type = 0;}
2991 void select_id_RANfunctionsAccepted() { set(optional); type=1;}
2992 X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
2993 template<typename V> bool decode(V& v)
2996 if(!v(ref_nested())) return false;
2997 if(equal(optional)) { type = 1; return true; }
2998 else { type = 2; return true;}
3002 template<typename V> bool encode(V& v) const
3004 return v(ref_nested());
3008 template<typename V> bool decode(size_t index, V& v)
3013 case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
3014 case 2: type = 2; return v(ref_nested());
3015 ref_nested().clear();
3020 template<typename V> bool encode(size_t index, V& v) const
3022 if(index != type) {return false;} return v(ref_nested());
3032 RICserviceQuery ::= SEQUENCE {
3033 protocolIEs ProtocolIE-Container {{RICserviceQuery-IEs}},
3038 struct RICserviceQuery : asn::sequence<1, 0, true, 0>
3040 static constexpr const char* name() {return "RICserviceQuery";}
3041 using parent_t = asn::sequence<1, 0, true, 0>;
3042 struct protocolIEs_t : ProtocolIE_Container<RICserviceQuery_IEs>
3044 static constexpr const char* name() {return "protocolIEs_t";}
3045 using parent_t = ProtocolIE_Container<RICserviceQuery_IEs>;
3048 protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
3049 protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
3050 template<typename V> void decode(V& v)
3055 template<typename V> void encode(V& v) const
3062 protocolIEs.clear();
3066 protocolIEs_t protocolIEs;
3070 RICserviceUpdate-IEs X2AP-PROTOCOL-IES ::= {
3071 { ID id-RANfunctionsAdded CRITICALITY reject TYPE RANfunctions-List PRESENCE optional}|
3072 { ID id-RANfunctionsModified CRITICALITY reject TYPE RANfunctions-List PRESENCE optional}|
3073 { ID id-RANfunctionsDeleted CRITICALITY reject TYPE RANfunctionsID-List PRESENCE optional},
3078 struct RICserviceUpdate_IEs
3080 struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
3082 size_t get_index() const {return type;}
3083 bool is_unknown() const { return type == 4; }
3084 void clear() {type = 0;}
3085 void select_id_RANfunctionsAdded() { set(id_RANfunctionsAdded); type=1;}
3086 void select_id_RANfunctionsModified() { set(id_RANfunctionsModified); type=2;}
3087 void select_id_RANfunctionsDeleted() { set(id_RANfunctionsDeleted); type=3;}
3088 X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
3089 template<typename V> bool decode(V& v)
3092 if(!v(ref_nested())) return false;
3093 if(equal(id_RANfunctionsAdded)) { type = 1; return true; }
3094 else if(equal(id_RANfunctionsModified)) { type = 2; return true; }
3095 else if(equal(id_RANfunctionsDeleted)) { type = 3; return true; }
3096 else { type = 4; return true;}
3100 template<typename V> bool encode(V& v) const
3102 return v(ref_nested());
3106 template<typename V> bool decode(size_t index, V& v)
3111 case 1: type = 1; if(v(ref_nested())) { return equal(id_RANfunctionsAdded);} return false;
3112 case 2: type = 2; if(v(ref_nested())) { return equal(id_RANfunctionsModified);} return false;
3113 case 3: type = 3; if(v(ref_nested())) { return equal(id_RANfunctionsDeleted);} return false;
3114 case 4: type = 4; return v(ref_nested());
3115 ref_nested().clear();
3120 template<typename V> bool encode(size_t index, V& v) const
3122 if(index != type) {return false;} return v(ref_nested());
3129 struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
3131 size_t get_index() const {return type;}
3132 bool is_unknown() const { return type == 4; }
3133 void clear() {type = 0;}
3134 void select_id_RANfunctionsAdded() { set(reject); type=1;}
3135 void select_id_RANfunctionsModified() { set(reject); type=2;}
3136 void select_id_RANfunctionsDeleted() { set(reject); type=3;}
3137 X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
3138 template<typename V> bool decode(V& v)
3141 if(!v(ref_nested())) return false;
3142 if(equal(reject)) { type = 1; return true; }
3143 else if(equal(reject)) { type = 2; return true; }
3144 else if(equal(reject)) { type = 3; return true; }
3145 else { type = 4; return true;}
3149 template<typename V> bool encode(V& v) const
3151 return v(ref_nested());
3155 template<typename V> bool decode(size_t index, V& v)
3160 case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
3161 case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
3162 case 3: type = 3; if(v(ref_nested())) { return equal(reject);} return false;
3163 case 4: type = 4; return v(ref_nested());
3164 ref_nested().clear();
3169 template<typename V> bool encode(size_t index, V& v) const
3171 if(index != type) {return false;} return v(ref_nested());
3178 struct Value_t : asn::typefield<true>
3180 ~Value_t() {clear();}
3181 size_t get_index() const {return type;}
3182 RANfunctions_List& select_id_RANfunctionsAdded() { return set<RANfunctions_List>(1); }
3183 RANfunctions_List const* get_id_RANfunctionsAdded() const { return get<RANfunctions_List>(1); }
3184 RANfunctions_List& select_id_RANfunctionsModified() { return set<RANfunctions_List>(2); }
3185 RANfunctions_List const* get_id_RANfunctionsModified() const { return get<RANfunctions_List>(2); }
3186 RANfunctionsID_List& select_id_RANfunctionsDeleted() { return set<RANfunctionsID_List>(3); }
3187 RANfunctionsID_List const* get_id_RANfunctionsDeleted() const { return get<RANfunctionsID_List>(3); }
3188 bool is_unknown() const { return type == 4; }
3193 case 1: var.destroy<RANfunctions_List>(); break;
3194 case 2: var.destroy<RANfunctions_List>(); break;
3195 case 3: var.destroy<RANfunctionsID_List>(); break;
3197 type = 0; ref_nested().clear();
3199 template<typename V> static inline void enumerate(V& v)
3201 v.template operator()<RANfunctions_List>(1);
3202 v.template operator()<RANfunctions_List>(2);
3203 v.template operator()<RANfunctionsID_List>(3);
3207 template<typename V> bool decode(size_t index, V& v)
3212 case 1: v(select_id_RANfunctionsAdded()); return true;
3213 case 2: v(select_id_RANfunctionsModified()); return true;
3214 case 3: v(select_id_RANfunctionsDeleted()); return true;
3215 case 4: if(type != 4) {clear(); asn::base::set();} type = 4; return true;
3220 template<typename V> bool encode(size_t index, V& v) const
3222 if(index != type) return false;
3225 case 1: v(var.as<RANfunctions_List>()); return true;
3226 case 2: v(var.as<RANfunctions_List>()); return true;
3227 case 3: v(var.as<RANfunctionsID_List>()); return true;
3233 template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
3234 template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
3237 char dummy1[sizeof(RANfunctionsID_List)];
3238 char dummy2[sizeof(RANfunctions_List)];
3241 asn::variant<sizeof(union_type)> var;
3245 struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
3247 size_t get_index() const {return type;}
3248 bool is_unknown() const { return type == 4; }
3249 void clear() {type = 0;}
3250 void select_id_RANfunctionsAdded() { set(optional); type=1;}
3251 void select_id_RANfunctionsModified() { set(optional); type=2;}
3252 void select_id_RANfunctionsDeleted() { set(optional); type=3;}
3253 X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
3254 template<typename V> bool decode(V& v)
3257 if(!v(ref_nested())) return false;
3258 if(equal(optional)) { type = 1; return true; }
3259 else if(equal(optional)) { type = 2; return true; }
3260 else if(equal(optional)) { type = 3; return true; }
3261 else { type = 4; return true;}
3265 template<typename V> bool encode(V& v) const
3267 return v(ref_nested());
3271 template<typename V> bool decode(size_t index, V& v)
3276 case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
3277 case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
3278 case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
3279 case 4: type = 4; return v(ref_nested());
3280 ref_nested().clear();
3285 template<typename V> bool encode(size_t index, V& v) const
3287 if(index != type) {return false;} return v(ref_nested());
3297 RICserviceUpdate ::= SEQUENCE {
3298 protocolIEs ProtocolIE-Container {{RICserviceUpdate-IEs}},
3303 struct RICserviceUpdate : asn::sequence<1, 0, true, 0>
3305 static constexpr const char* name() {return "RICserviceUpdate";}
3306 using parent_t = asn::sequence<1, 0, true, 0>;
3307 struct protocolIEs_t : ProtocolIE_Container<RICserviceUpdate_IEs>
3309 static constexpr const char* name() {return "protocolIEs_t";}
3310 using parent_t = ProtocolIE_Container<RICserviceUpdate_IEs>;
3313 protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
3314 protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
3315 template<typename V> void decode(V& v)
3320 template<typename V> void encode(V& v) const
3327 protocolIEs.clear();
3331 protocolIEs_t protocolIEs;
3335 RICserviceUpdateAcknowledge-IEs X2AP-PROTOCOL-IES ::= {
3336 { ID id-RANfunctionsAccepted CRITICALITY reject TYPE RANfunctionsID-List PRESENCE optional}|
3337 { ID id-RANfunctionsRejected CRITICALITY reject TYPE RANfunctionsIDcause-List PRESENCE optional},
3342 struct RICserviceUpdateAcknowledge_IEs
3344 struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
3346 size_t get_index() const {return type;}
3347 bool is_unknown() const { return type == 3; }
3348 void clear() {type = 0;}
3349 void select_id_RANfunctionsAccepted() { set(id_RANfunctionsAccepted); type=1;}
3350 void select_id_RANfunctionsRejected() { set(id_RANfunctionsRejected); type=2;}
3351 X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
3352 template<typename V> bool decode(V& v)
3355 if(!v(ref_nested())) return false;
3356 if(equal(id_RANfunctionsAccepted)) { type = 1; return true; }
3357 else if(equal(id_RANfunctionsRejected)) { type = 2; return true; }
3358 else { type = 3; return true;}
3362 template<typename V> bool encode(V& v) const
3364 return v(ref_nested());
3368 template<typename V> bool decode(size_t index, V& v)
3373 case 1: type = 1; if(v(ref_nested())) { return equal(id_RANfunctionsAccepted);} return false;
3374 case 2: type = 2; if(v(ref_nested())) { return equal(id_RANfunctionsRejected);} return false;
3375 case 3: type = 3; return v(ref_nested());
3376 ref_nested().clear();
3381 template<typename V> bool encode(size_t index, V& v) const
3383 if(index != type) {return false;} return v(ref_nested());
3390 struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
3392 size_t get_index() const {return type;}
3393 bool is_unknown() const { return type == 3; }
3394 void clear() {type = 0;}
3395 void select_id_RANfunctionsAccepted() { set(reject); type=1;}
3396 void select_id_RANfunctionsRejected() { set(reject); type=2;}
3397 X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
3398 template<typename V> bool decode(V& v)
3401 if(!v(ref_nested())) return false;
3402 if(equal(reject)) { type = 1; return true; }
3403 else if(equal(reject)) { type = 2; return true; }
3404 else { type = 3; return true;}
3408 template<typename V> bool encode(V& v) const
3410 return v(ref_nested());
3414 template<typename V> bool decode(size_t index, V& v)
3419 case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
3420 case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
3421 case 3: type = 3; return v(ref_nested());
3422 ref_nested().clear();
3427 template<typename V> bool encode(size_t index, V& v) const
3429 if(index != type) {return false;} return v(ref_nested());
3436 struct Value_t : asn::typefield<true>
3438 ~Value_t() {clear();}
3439 size_t get_index() const {return type;}
3440 RANfunctionsID_List& select_id_RANfunctionsAccepted() { return set<RANfunctionsID_List>(1); }
3441 RANfunctionsID_List const* get_id_RANfunctionsAccepted() const { return get<RANfunctionsID_List>(1); }
3442 RANfunctionsIDcause_List& select_id_RANfunctionsRejected() { return set<RANfunctionsIDcause_List>(2); }
3443 RANfunctionsIDcause_List const* get_id_RANfunctionsRejected() const { return get<RANfunctionsIDcause_List>(2); }
3444 bool is_unknown() const { return type == 3; }
3449 case 1: var.destroy<RANfunctionsID_List>(); break;
3450 case 2: var.destroy<RANfunctionsIDcause_List>(); break;
3452 type = 0; ref_nested().clear();
3454 template<typename V> static inline void enumerate(V& v)
3456 v.template operator()<RANfunctionsID_List>(1);
3457 v.template operator()<RANfunctionsIDcause_List>(2);
3461 template<typename V> bool decode(size_t index, V& v)
3466 case 1: v(select_id_RANfunctionsAccepted()); return true;
3467 case 2: v(select_id_RANfunctionsRejected()); return true;
3468 case 3: if(type != 3) {clear(); asn::base::set();} type = 3; return true;
3473 template<typename V> bool encode(size_t index, V& v) const
3475 if(index != type) return false;
3478 case 1: v(var.as<RANfunctionsID_List>()); return true;
3479 case 2: v(var.as<RANfunctionsIDcause_List>()); return true;
3485 template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
3486 template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
3489 char dummy1[sizeof(RANfunctionsID_List)];
3490 char dummy2[sizeof(RANfunctionsIDcause_List)];
3493 asn::variant<sizeof(union_type)> var;
3497 struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
3499 size_t get_index() const {return type;}
3500 bool is_unknown() const { return type == 3; }
3501 void clear() {type = 0;}
3502 void select_id_RANfunctionsAccepted() { set(optional); type=1;}
3503 void select_id_RANfunctionsRejected() { set(optional); type=2;}
3504 X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
3505 template<typename V> bool decode(V& v)
3508 if(!v(ref_nested())) return false;
3509 if(equal(optional)) { type = 1; return true; }
3510 else if(equal(optional)) { type = 2; return true; }
3511 else { type = 3; return true;}
3515 template<typename V> bool encode(V& v) const
3517 return v(ref_nested());
3521 template<typename V> bool decode(size_t index, V& v)
3526 case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
3527 case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
3528 case 3: type = 3; return v(ref_nested());
3529 ref_nested().clear();
3534 template<typename V> bool encode(size_t index, V& v) const
3536 if(index != type) {return false;} return v(ref_nested());
3546 RICserviceUpdateAcknowledge ::= SEQUENCE {
3547 protocolIEs ProtocolIE-Container {{RICserviceUpdateAcknowledge-IEs}},
3552 struct RICserviceUpdateAcknowledge : asn::sequence<1, 0, true, 0>
3554 static constexpr const char* name() {return "RICserviceUpdateAcknowledge";}
3555 using parent_t = asn::sequence<1, 0, true, 0>;
3556 struct protocolIEs_t : ProtocolIE_Container<RICserviceUpdateAcknowledge_IEs>
3558 static constexpr const char* name() {return "protocolIEs_t";}
3559 using parent_t = ProtocolIE_Container<RICserviceUpdateAcknowledge_IEs>;
3562 protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
3563 protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
3564 template<typename V> void decode(V& v)
3569 template<typename V> void encode(V& v) const
3576 protocolIEs.clear();
3580 protocolIEs_t protocolIEs;
3584 RICserviceUpdateFailure-IEs X2AP-PROTOCOL-IES ::= {
3585 { ID id-RANfunctionsRejected CRITICALITY reject TYPE RANfunctionsIDcause-List PRESENCE optional}|
3586 { ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional}|
3587 { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional},
3592 struct RICserviceUpdateFailure_IEs
3594 struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
3596 size_t get_index() const {return type;}
3597 bool is_unknown() const { return type == 4; }
3598 void clear() {type = 0;}
3599 void select_id_RANfunctionsRejected() { set(id_RANfunctionsRejected); type=1;}
3600 void select_id_TimeToWait() { set(id_TimeToWait); type=2;}
3601 void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=3;}
3602 X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
3603 template<typename V> bool decode(V& v)
3606 if(!v(ref_nested())) return false;
3607 if(equal(id_RANfunctionsRejected)) { type = 1; return true; }
3608 else if(equal(id_TimeToWait)) { type = 2; return true; }
3609 else if(equal(id_CriticalityDiagnostics)) { type = 3; return true; }
3610 else { type = 4; return true;}
3614 template<typename V> bool encode(V& v) const
3616 return v(ref_nested());
3620 template<typename V> bool decode(size_t index, V& v)
3625 case 1: type = 1; if(v(ref_nested())) { return equal(id_RANfunctionsRejected);} return false;
3626 case 2: type = 2; if(v(ref_nested())) { return equal(id_TimeToWait);} return false;
3627 case 3: type = 3; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
3628 case 4: type = 4; return v(ref_nested());
3629 ref_nested().clear();
3634 template<typename V> bool encode(size_t index, V& v) const
3636 if(index != type) {return false;} return v(ref_nested());
3643 struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
3645 size_t get_index() const {return type;}
3646 bool is_unknown() const { return type == 4; }
3647 void clear() {type = 0;}
3648 void select_id_RANfunctionsRejected() { set(reject); type=1;}
3649 void select_id_TimeToWait() { set(ignore); type=2;}
3650 void select_id_CriticalityDiagnostics() { set(ignore); type=3;}
3651 X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
3652 template<typename V> bool decode(V& v)
3655 if(!v(ref_nested())) return false;
3656 if(equal(reject)) { type = 1; return true; }
3657 else if(equal(ignore)) { type = 2; return true; }
3658 else if(equal(ignore)) { type = 3; return true; }
3659 else { type = 4; return true;}
3663 template<typename V> bool encode(V& v) const
3665 return v(ref_nested());
3669 template<typename V> bool decode(size_t index, V& v)
3674 case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
3675 case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
3676 case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
3677 case 4: type = 4; return v(ref_nested());
3678 ref_nested().clear();
3683 template<typename V> bool encode(size_t index, V& v) const
3685 if(index != type) {return false;} return v(ref_nested());
3692 struct Value_t : asn::typefield<true>
3694 ~Value_t() {clear();}
3695 size_t get_index() const {return type;}
3696 RANfunctionsIDcause_List& select_id_RANfunctionsRejected() { return set<RANfunctionsIDcause_List>(1); }
3697 RANfunctionsIDcause_List const* get_id_RANfunctionsRejected() const { return get<RANfunctionsIDcause_List>(1); }
3698 TimeToWait& select_id_TimeToWait() { return set<TimeToWait>(2); }
3699 TimeToWait const* get_id_TimeToWait() const { return get<TimeToWait>(2); }
3700 CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(3); }
3701 CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(3); }
3702 bool is_unknown() const { return type == 4; }
3707 case 1: var.destroy<RANfunctionsIDcause_List>(); break;
3708 case 2: var.destroy<TimeToWait>(); break;
3709 case 3: var.destroy<CriticalityDiagnostics>(); break;
3711 type = 0; ref_nested().clear();
3713 template<typename V> static inline void enumerate(V& v)
3715 v.template operator()<RANfunctionsIDcause_List>(1);
3716 v.template operator()<TimeToWait>(2);
3717 v.template operator()<CriticalityDiagnostics>(3);
3721 template<typename V> bool decode(size_t index, V& v)
3726 case 1: v(select_id_RANfunctionsRejected()); return true;
3727 case 2: v(select_id_TimeToWait()); return true;
3728 case 3: v(select_id_CriticalityDiagnostics()); return true;
3729 case 4: if(type != 4) {clear(); asn::base::set();} type = 4; return true;
3734 template<typename V> bool encode(size_t index, V& v) const
3736 if(index != type) return false;
3739 case 1: v(var.as<RANfunctionsIDcause_List>()); return true;
3740 case 2: v(var.as<TimeToWait>()); return true;
3741 case 3: v(var.as<CriticalityDiagnostics>()); return true;
3747 template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
3748 template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
3751 char dummy1[sizeof(CriticalityDiagnostics)];
3752 char dummy2[sizeof(RANfunctionsIDcause_List)];
3753 char dummy3[sizeof(TimeToWait)];
3756 asn::variant<sizeof(union_type)> var;
3760 struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
3762 size_t get_index() const {return type;}
3763 bool is_unknown() const { return type == 4; }
3764 void clear() {type = 0;}
3765 void select_id_RANfunctionsRejected() { set(optional); type=1;}
3766 void select_id_TimeToWait() { set(optional); type=2;}
3767 void select_id_CriticalityDiagnostics() { set(optional); type=3;}
3768 X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
3769 template<typename V> bool decode(V& v)
3772 if(!v(ref_nested())) return false;
3773 if(equal(optional)) { type = 1; return true; }
3774 else if(equal(optional)) { type = 2; return true; }
3775 else if(equal(optional)) { type = 3; return true; }
3776 else { type = 4; return true;}
3780 template<typename V> bool encode(V& v) const
3782 return v(ref_nested());
3786 template<typename V> bool decode(size_t index, V& v)
3791 case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
3792 case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
3793 case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
3794 case 4: type = 4; return v(ref_nested());
3795 ref_nested().clear();
3800 template<typename V> bool encode(size_t index, V& v) const
3802 if(index != type) {return false;} return v(ref_nested());
3812 RICserviceUpdateFailure ::= SEQUENCE {
3813 protocolIEs ProtocolIE-Container {{RICserviceUpdateFailure-IEs}},
3818 struct RICserviceUpdateFailure : asn::sequence<1, 0, true, 0>
3820 static constexpr const char* name() {return "RICserviceUpdateFailure";}
3821 using parent_t = asn::sequence<1, 0, true, 0>;
3822 struct protocolIEs_t : ProtocolIE_Container<RICserviceUpdateFailure_IEs>
3824 static constexpr const char* name() {return "protocolIEs_t";}
3825 using parent_t = ProtocolIE_Container<RICserviceUpdateFailure_IEs>;
3828 protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
3829 protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
3830 template<typename V> void decode(V& v)
3835 template<typename V> void encode(V& v) const
3842 protocolIEs.clear();
3846 protocolIEs_t protocolIEs;
3850 RICsubscription ::= SEQUENCE {
3851 ricEventTriggerDefinition RICeventTriggerDefinition,
3852 ricAction-ToBeSetup-List RICactions-ToBeSetup-List,
3857 struct RICsubscription : asn::sequence<2, 0, true, 0>
3859 static constexpr const char* name() {return "RICsubscription";}
3860 using parent_t = asn::sequence<2, 0, true, 0>;
3861 struct ricEventTriggerDefinition_t : RICeventTriggerDefinition
3863 static constexpr const char* name() {return "ricEventTriggerDefinition_t";}
3864 using parent_t = RICeventTriggerDefinition;
3867 ricEventTriggerDefinition_t& ref_ricEventTriggerDefinition() {return ricEventTriggerDefinition;}
3868 ricEventTriggerDefinition_t const& ref_ricEventTriggerDefinition() const {return ricEventTriggerDefinition;}
3869 struct ricAction_ToBeSetup_List_t : RICactions_ToBeSetup_List
3871 static constexpr const char* name() {return "ricAction_ToBeSetup_List_t";}
3872 using parent_t = RICactions_ToBeSetup_List;
3875 ricAction_ToBeSetup_List_t& ref_ricAction_ToBeSetup_List() {return ricAction_ToBeSetup_List;}
3876 ricAction_ToBeSetup_List_t const& ref_ricAction_ToBeSetup_List() const {return ricAction_ToBeSetup_List;}
3877 template<typename V> void decode(V& v)
3879 v(ricEventTriggerDefinition);
3880 v(ricAction_ToBeSetup_List);
3883 template<typename V> void encode(V& v) const
3885 v(ricEventTriggerDefinition);
3886 v(ricAction_ToBeSetup_List);
3891 ricEventTriggerDefinition.clear();
3892 ricAction_ToBeSetup_List.clear();
3896 ricEventTriggerDefinition_t ricEventTriggerDefinition;
3897 ricAction_ToBeSetup_List_t ricAction_ToBeSetup_List;
3901 RICsubscriptionDeleteFailure-IEs X2AP-PROTOCOL-IES ::= {
3902 { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory}|
3903 { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory}|
3904 { ID id-RICcause CRITICALITY reject TYPE RICcause PRESENCE mandatory}|
3905 { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional},
3910 struct RICsubscriptionDeleteFailure_IEs
3912 struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
3914 size_t get_index() const {return type;}
3915 bool is_unknown() const { return type == 5; }
3916 void clear() {type = 0;}
3917 void select_id_RICrequestID() { set(id_RICrequestID); type=1;}
3918 void select_id_RANfunctionID() { set(id_RANfunctionID); type=2;}
3919 void select_id_RICcause() { set(id_RICcause); type=3;}
3920 void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=4;}
3921 X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
3922 template<typename V> bool decode(V& v)
3925 if(!v(ref_nested())) return false;
3926 if(equal(id_RICrequestID)) { type = 1; return true; }
3927 else if(equal(id_RANfunctionID)) { type = 2; return true; }
3928 else if(equal(id_RICcause)) { type = 3; return true; }
3929 else if(equal(id_CriticalityDiagnostics)) { type = 4; return true; }
3930 else { type = 5; return true;}
3934 template<typename V> bool encode(V& v) const
3936 return v(ref_nested());
3940 template<typename V> bool decode(size_t index, V& v)
3945 case 1: type = 1; if(v(ref_nested())) { return equal(id_RICrequestID);} return false;
3946 case 2: type = 2; if(v(ref_nested())) { return equal(id_RANfunctionID);} return false;
3947 case 3: type = 3; if(v(ref_nested())) { return equal(id_RICcause);} return false;
3948 case 4: type = 4; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
3949 case 5: type = 5; return v(ref_nested());
3950 ref_nested().clear();
3955 template<typename V> bool encode(size_t index, V& v) const
3957 if(index != type) {return false;} return v(ref_nested());
3964 struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
3966 size_t get_index() const {return type;}
3967 bool is_unknown() const { return type == 5; }
3968 void clear() {type = 0;}
3969 void select_id_RICrequestID() { set(reject); type=1;}
3970 void select_id_RANfunctionID() { set(reject); type=2;}
3971 void select_id_RICcause() { set(reject); type=3;}
3972 void select_id_CriticalityDiagnostics() { set(ignore); type=4;}
3973 X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
3974 template<typename V> bool decode(V& v)
3977 if(!v(ref_nested())) return false;
3978 if(equal(reject)) { type = 1; return true; }
3979 else if(equal(reject)) { type = 2; return true; }
3980 else if(equal(reject)) { type = 3; return true; }
3981 else if(equal(ignore)) { type = 4; return true; }
3982 else { type = 5; return true;}
3986 template<typename V> bool encode(V& v) const
3988 return v(ref_nested());
3992 template<typename V> bool decode(size_t index, V& v)
3997 case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
3998 case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
3999 case 3: type = 3; if(v(ref_nested())) { return equal(reject);} return false;
4000 case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
4001 case 5: type = 5; return v(ref_nested());
4002 ref_nested().clear();
4007 template<typename V> bool encode(size_t index, V& v) const
4009 if(index != type) {return false;} return v(ref_nested());
4016 struct Value_t : asn::typefield<true>
4018 ~Value_t() {clear();}
4019 size_t get_index() const {return type;}
4020 RICrequestID& select_id_RICrequestID() { return set<RICrequestID>(1); }
4021 RICrequestID const* get_id_RICrequestID() const { return get<RICrequestID>(1); }
4022 RANfunctionID& select_id_RANfunctionID() { return set<RANfunctionID>(2); }
4023 RANfunctionID const* get_id_RANfunctionID() const { return get<RANfunctionID>(2); }
4024 RICcause& select_id_RICcause() { return set<RICcause>(3); }
4025 RICcause const* get_id_RICcause() const { return get<RICcause>(3); }
4026 CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(4); }
4027 CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(4); }
4028 bool is_unknown() const { return type == 5; }
4033 case 1: var.destroy<RICrequestID>(); break;
4034 case 2: var.destroy<RANfunctionID>(); break;
4035 case 3: var.destroy<RICcause>(); break;
4036 case 4: var.destroy<CriticalityDiagnostics>(); break;
4038 type = 0; ref_nested().clear();
4040 template<typename V> static inline void enumerate(V& v)
4042 v.template operator()<RICrequestID>(1);
4043 v.template operator()<RANfunctionID>(2);
4044 v.template operator()<RICcause>(3);
4045 v.template operator()<CriticalityDiagnostics>(4);
4049 template<typename V> bool decode(size_t index, V& v)
4054 case 1: v(select_id_RICrequestID()); return true;
4055 case 2: v(select_id_RANfunctionID()); return true;
4056 case 3: v(select_id_RICcause()); return true;
4057 case 4: v(select_id_CriticalityDiagnostics()); return true;
4058 case 5: if(type != 5) {clear(); asn::base::set();} type = 5; return true;
4063 template<typename V> bool encode(size_t index, V& v) const
4065 if(index != type) return false;
4068 case 1: v(var.as<RICrequestID>()); return true;
4069 case 2: v(var.as<RANfunctionID>()); return true;
4070 case 3: v(var.as<RICcause>()); return true;
4071 case 4: v(var.as<CriticalityDiagnostics>()); return true;
4077 template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
4078 template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
4081 char dummy1[sizeof(CriticalityDiagnostics)];
4082 char dummy2[sizeof(RANfunctionID)];
4083 char dummy3[sizeof(RICcause)];
4084 char dummy4[sizeof(RICrequestID)];
4087 asn::variant<sizeof(union_type)> var;
4091 struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
4093 size_t get_index() const {return type;}
4094 bool is_unknown() const { return type == 5; }
4095 void clear() {type = 0;}
4096 void select_id_RICrequestID() { set(mandatory); type=1;}
4097 void select_id_RANfunctionID() { set(mandatory); type=2;}
4098 void select_id_RICcause() { set(mandatory); type=3;}
4099 void select_id_CriticalityDiagnostics() { set(optional); type=4;}
4100 X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
4101 template<typename V> bool decode(V& v)
4104 if(!v(ref_nested())) return false;
4105 if(equal(mandatory)) { type = 1; return true; }
4106 else if(equal(mandatory)) { type = 2; return true; }
4107 else if(equal(mandatory)) { type = 3; return true; }
4108 else if(equal(optional)) { type = 4; return true; }
4109 else { type = 5; return true;}
4113 template<typename V> bool encode(V& v) const
4115 return v(ref_nested());
4119 template<typename V> bool decode(size_t index, V& v)
4124 case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
4125 case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
4126 case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
4127 case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
4128 case 5: type = 5; return v(ref_nested());
4129 ref_nested().clear();
4134 template<typename V> bool encode(size_t index, V& v) const
4136 if(index != type) {return false;} return v(ref_nested());
4146 RICsubscriptionDeleteFailure ::= SEQUENCE {
4147 protocolIEs ProtocolIE-Container {{RICsubscriptionDeleteFailure-IEs}},
4152 struct RICsubscriptionDeleteFailure : asn::sequence<1, 0, true, 0>
4154 static constexpr const char* name() {return "RICsubscriptionDeleteFailure";}
4155 using parent_t = asn::sequence<1, 0, true, 0>;
4156 struct protocolIEs_t : ProtocolIE_Container<RICsubscriptionDeleteFailure_IEs>
4158 static constexpr const char* name() {return "protocolIEs_t";}
4159 using parent_t = ProtocolIE_Container<RICsubscriptionDeleteFailure_IEs>;
4162 protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
4163 protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
4164 template<typename V> void decode(V& v)
4169 template<typename V> void encode(V& v) const
4176 protocolIEs.clear();
4180 protocolIEs_t protocolIEs;
4184 RICsubscriptionDeleteRequest-IEs X2AP-PROTOCOL-IES ::= {
4185 { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory}|
4186 { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory},
4191 struct RICsubscriptionDeleteRequest_IEs
4193 struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
4195 size_t get_index() const {return type;}
4196 bool is_unknown() const { return type == 3; }
4197 void clear() {type = 0;}
4198 void select_id_RICrequestID() { set(id_RICrequestID); type=1;}
4199 void select_id_RANfunctionID() { set(id_RANfunctionID); type=2;}
4200 X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
4201 template<typename V> bool decode(V& v)
4204 if(!v(ref_nested())) return false;
4205 if(equal(id_RICrequestID)) { type = 1; return true; }
4206 else if(equal(id_RANfunctionID)) { type = 2; return true; }
4207 else { type = 3; return true;}
4211 template<typename V> bool encode(V& v) const
4213 return v(ref_nested());
4217 template<typename V> bool decode(size_t index, V& v)
4222 case 1: type = 1; if(v(ref_nested())) { return equal(id_RICrequestID);} return false;
4223 case 2: type = 2; if(v(ref_nested())) { return equal(id_RANfunctionID);} return false;
4224 case 3: type = 3; return v(ref_nested());
4225 ref_nested().clear();
4230 template<typename V> bool encode(size_t index, V& v) const
4232 if(index != type) {return false;} return v(ref_nested());
4239 struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
4241 size_t get_index() const {return type;}
4242 bool is_unknown() const { return type == 3; }
4243 void clear() {type = 0;}
4244 void select_id_RICrequestID() { set(reject); type=1;}
4245 void select_id_RANfunctionID() { set(reject); type=2;}
4246 X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
4247 template<typename V> bool decode(V& v)
4250 if(!v(ref_nested())) return false;
4251 if(equal(reject)) { type = 1; return true; }
4252 else if(equal(reject)) { type = 2; return true; }
4253 else { type = 3; return true;}
4257 template<typename V> bool encode(V& v) const
4259 return v(ref_nested());
4263 template<typename V> bool decode(size_t index, V& v)
4268 case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
4269 case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
4270 case 3: type = 3; return v(ref_nested());
4271 ref_nested().clear();
4276 template<typename V> bool encode(size_t index, V& v) const
4278 if(index != type) {return false;} return v(ref_nested());
4285 struct Value_t : asn::typefield<true>
4287 ~Value_t() {clear();}
4288 size_t get_index() const {return type;}
4289 RICrequestID& select_id_RICrequestID() { return set<RICrequestID>(1); }
4290 RICrequestID const* get_id_RICrequestID() const { return get<RICrequestID>(1); }
4291 RANfunctionID& select_id_RANfunctionID() { return set<RANfunctionID>(2); }
4292 RANfunctionID const* get_id_RANfunctionID() const { return get<RANfunctionID>(2); }
4293 bool is_unknown() const { return type == 3; }
4298 case 1: var.destroy<RICrequestID>(); break;
4299 case 2: var.destroy<RANfunctionID>(); break;
4301 type = 0; ref_nested().clear();
4303 template<typename V> static inline void enumerate(V& v)
4305 v.template operator()<RICrequestID>(1);
4306 v.template operator()<RANfunctionID>(2);
4310 template<typename V> bool decode(size_t index, V& v)
4315 case 1: v(select_id_RICrequestID()); return true;
4316 case 2: v(select_id_RANfunctionID()); return true;
4317 case 3: if(type != 3) {clear(); asn::base::set();} type = 3; return true;
4322 template<typename V> bool encode(size_t index, V& v) const
4324 if(index != type) return false;
4327 case 1: v(var.as<RICrequestID>()); return true;
4328 case 2: v(var.as<RANfunctionID>()); return true;
4334 template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
4335 template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
4338 char dummy1[sizeof(RANfunctionID)];
4339 char dummy2[sizeof(RICrequestID)];
4342 asn::variant<sizeof(union_type)> var;
4346 struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
4348 size_t get_index() const {return type;}
4349 bool is_unknown() const { return type == 3; }
4350 void clear() {type = 0;}
4351 void select_id_RICrequestID() { set(mandatory); type=1;}
4352 void select_id_RANfunctionID() { set(mandatory); type=2;}
4353 X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
4354 template<typename V> bool decode(V& v)
4357 if(!v(ref_nested())) return false;
4358 if(equal(mandatory)) { type = 1; return true; }
4359 else if(equal(mandatory)) { type = 2; return true; }
4360 else { type = 3; return true;}
4364 template<typename V> bool encode(V& v) const
4366 return v(ref_nested());
4370 template<typename V> bool decode(size_t index, V& v)
4375 case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
4376 case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
4377 case 3: type = 3; return v(ref_nested());
4378 ref_nested().clear();
4383 template<typename V> bool encode(size_t index, V& v) const
4385 if(index != type) {return false;} return v(ref_nested());
4395 RICsubscriptionDeleteRequest ::= SEQUENCE {
4396 protocolIEs ProtocolIE-Container {{RICsubscriptionDeleteRequest-IEs}},
4401 struct RICsubscriptionDeleteRequest : asn::sequence<1, 0, true, 0>
4403 static constexpr const char* name() {return "RICsubscriptionDeleteRequest";}
4404 using parent_t = asn::sequence<1, 0, true, 0>;
4405 struct protocolIEs_t : ProtocolIE_Container<RICsubscriptionDeleteRequest_IEs>
4407 static constexpr const char* name() {return "protocolIEs_t";}
4408 using parent_t = ProtocolIE_Container<RICsubscriptionDeleteRequest_IEs>;
4411 protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
4412 protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
4413 template<typename V> void decode(V& v)
4418 template<typename V> void encode(V& v) const
4425 protocolIEs.clear();
4429 protocolIEs_t protocolIEs;
4433 RICsubscriptionDeleteResponse-IEs X2AP-PROTOCOL-IES ::= {
4434 { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory}|
4435 { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory},
4440 struct RICsubscriptionDeleteResponse_IEs
4442 struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
4444 size_t get_index() const {return type;}
4445 bool is_unknown() const { return type == 3; }
4446 void clear() {type = 0;}
4447 void select_id_RICrequestID() { set(id_RICrequestID); type=1;}
4448 void select_id_RANfunctionID() { set(id_RANfunctionID); type=2;}
4449 X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
4450 template<typename V> bool decode(V& v)
4453 if(!v(ref_nested())) return false;
4454 if(equal(id_RICrequestID)) { type = 1; return true; }
4455 else if(equal(id_RANfunctionID)) { type = 2; return true; }
4456 else { type = 3; return true;}
4460 template<typename V> bool encode(V& v) const
4462 return v(ref_nested());
4466 template<typename V> bool decode(size_t index, V& v)
4471 case 1: type = 1; if(v(ref_nested())) { return equal(id_RICrequestID);} return false;
4472 case 2: type = 2; if(v(ref_nested())) { return equal(id_RANfunctionID);} return false;
4473 case 3: type = 3; return v(ref_nested());
4474 ref_nested().clear();
4479 template<typename V> bool encode(size_t index, V& v) const
4481 if(index != type) {return false;} return v(ref_nested());
4488 struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
4490 size_t get_index() const {return type;}
4491 bool is_unknown() const { return type == 3; }
4492 void clear() {type = 0;}
4493 void select_id_RICrequestID() { set(reject); type=1;}
4494 void select_id_RANfunctionID() { set(reject); type=2;}
4495 X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
4496 template<typename V> bool decode(V& v)
4499 if(!v(ref_nested())) return false;
4500 if(equal(reject)) { type = 1; return true; }
4501 else if(equal(reject)) { type = 2; return true; }
4502 else { type = 3; return true;}
4506 template<typename V> bool encode(V& v) const
4508 return v(ref_nested());
4512 template<typename V> bool decode(size_t index, V& v)
4517 case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
4518 case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
4519 case 3: type = 3; return v(ref_nested());
4520 ref_nested().clear();
4525 template<typename V> bool encode(size_t index, V& v) const
4527 if(index != type) {return false;} return v(ref_nested());
4534 struct Value_t : asn::typefield<true>
4536 ~Value_t() {clear();}
4537 size_t get_index() const {return type;}
4538 RICrequestID& select_id_RICrequestID() { return set<RICrequestID>(1); }
4539 RICrequestID const* get_id_RICrequestID() const { return get<RICrequestID>(1); }
4540 RANfunctionID& select_id_RANfunctionID() { return set<RANfunctionID>(2); }
4541 RANfunctionID const* get_id_RANfunctionID() const { return get<RANfunctionID>(2); }
4542 bool is_unknown() const { return type == 3; }
4547 case 1: var.destroy<RICrequestID>(); break;
4548 case 2: var.destroy<RANfunctionID>(); break;
4550 type = 0; ref_nested().clear();
4552 template<typename V> static inline void enumerate(V& v)
4554 v.template operator()<RICrequestID>(1);
4555 v.template operator()<RANfunctionID>(2);
4559 template<typename V> bool decode(size_t index, V& v)
4564 case 1: v(select_id_RICrequestID()); return true;
4565 case 2: v(select_id_RANfunctionID()); return true;
4566 case 3: if(type != 3) {clear(); asn::base::set();} type = 3; return true;
4571 template<typename V> bool encode(size_t index, V& v) const
4573 if(index != type) return false;
4576 case 1: v(var.as<RICrequestID>()); return true;
4577 case 2: v(var.as<RANfunctionID>()); return true;
4583 template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
4584 template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
4587 char dummy1[sizeof(RANfunctionID)];
4588 char dummy2[sizeof(RICrequestID)];
4591 asn::variant<sizeof(union_type)> var;
4595 struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
4597 size_t get_index() const {return type;}
4598 bool is_unknown() const { return type == 3; }
4599 void clear() {type = 0;}
4600 void select_id_RICrequestID() { set(mandatory); type=1;}
4601 void select_id_RANfunctionID() { set(mandatory); type=2;}
4602 X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
4603 template<typename V> bool decode(V& v)
4606 if(!v(ref_nested())) return false;
4607 if(equal(mandatory)) { type = 1; return true; }
4608 else if(equal(mandatory)) { type = 2; return true; }
4609 else { type = 3; return true;}
4613 template<typename V> bool encode(V& v) const
4615 return v(ref_nested());
4619 template<typename V> bool decode(size_t index, V& v)
4624 case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
4625 case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
4626 case 3: type = 3; return v(ref_nested());
4627 ref_nested().clear();
4632 template<typename V> bool encode(size_t index, V& v) const
4634 if(index != type) {return false;} return v(ref_nested());
4644 RICsubscriptionDeleteResponse ::= SEQUENCE {
4645 protocolIEs ProtocolIE-Container {{RICsubscriptionDeleteResponse-IEs}},
4650 struct RICsubscriptionDeleteResponse : asn::sequence<1, 0, true, 0>
4652 static constexpr const char* name() {return "RICsubscriptionDeleteResponse";}
4653 using parent_t = asn::sequence<1, 0, true, 0>;
4654 struct protocolIEs_t : ProtocolIE_Container<RICsubscriptionDeleteResponse_IEs>
4656 static constexpr const char* name() {return "protocolIEs_t";}
4657 using parent_t = ProtocolIE_Container<RICsubscriptionDeleteResponse_IEs>;
4660 protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
4661 protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
4662 template<typename V> void decode(V& v)
4667 template<typename V> void encode(V& v) const
4674 protocolIEs.clear();
4678 protocolIEs_t protocolIEs;
4682 RICsubscriptionFailure-IEs X2AP-PROTOCOL-IES ::= {
4683 { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory}|
4684 { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory}|
4685 { ID id-RICactions-NotAdmitted CRITICALITY reject TYPE RICaction-NotAdmitted-List PRESENCE mandatory}|
4686 { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional},
4691 struct RICsubscriptionFailure_IEs
4693 struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
4695 size_t get_index() const {return type;}
4696 bool is_unknown() const { return type == 5; }
4697 void clear() {type = 0;}
4698 void select_id_RICrequestID() { set(id_RICrequestID); type=1;}
4699 void select_id_RANfunctionID() { set(id_RANfunctionID); type=2;}
4700 void select_id_RICactions_NotAdmitted() { set(id_RICactions_NotAdmitted); type=3;}
4701 void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=4;}
4702 X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
4703 template<typename V> bool decode(V& v)
4706 if(!v(ref_nested())) return false;
4707 if(equal(id_RICrequestID)) { type = 1; return true; }
4708 else if(equal(id_RANfunctionID)) { type = 2; return true; }
4709 else if(equal(id_RICactions_NotAdmitted)) { type = 3; return true; }
4710 else if(equal(id_CriticalityDiagnostics)) { type = 4; return true; }
4711 else { type = 5; return true;}
4715 template<typename V> bool encode(V& v) const
4717 return v(ref_nested());
4721 template<typename V> bool decode(size_t index, V& v)
4726 case 1: type = 1; if(v(ref_nested())) { return equal(id_RICrequestID);} return false;
4727 case 2: type = 2; if(v(ref_nested())) { return equal(id_RANfunctionID);} return false;
4728 case 3: type = 3; if(v(ref_nested())) { return equal(id_RICactions_NotAdmitted);} return false;
4729 case 4: type = 4; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
4730 case 5: type = 5; return v(ref_nested());
4731 ref_nested().clear();
4736 template<typename V> bool encode(size_t index, V& v) const
4738 if(index != type) {return false;} return v(ref_nested());
4745 struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
4747 size_t get_index() const {return type;}
4748 bool is_unknown() const { return type == 5; }
4749 void clear() {type = 0;}
4750 void select_id_RICrequestID() { set(reject); type=1;}
4751 void select_id_RANfunctionID() { set(reject); type=2;}
4752 void select_id_RICactions_NotAdmitted() { set(reject); type=3;}
4753 void select_id_CriticalityDiagnostics() { set(ignore); type=4;}
4754 X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
4755 template<typename V> bool decode(V& v)
4758 if(!v(ref_nested())) return false;
4759 if(equal(reject)) { type = 1; return true; }
4760 else if(equal(reject)) { type = 2; return true; }
4761 else if(equal(reject)) { type = 3; return true; }
4762 else if(equal(ignore)) { type = 4; return true; }
4763 else { type = 5; return true;}
4767 template<typename V> bool encode(V& v) const
4769 return v(ref_nested());
4773 template<typename V> bool decode(size_t index, V& v)
4778 case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
4779 case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
4780 case 3: type = 3; if(v(ref_nested())) { return equal(reject);} return false;
4781 case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
4782 case 5: type = 5; return v(ref_nested());
4783 ref_nested().clear();
4788 template<typename V> bool encode(size_t index, V& v) const
4790 if(index != type) {return false;} return v(ref_nested());
4797 struct Value_t : asn::typefield<true>
4799 ~Value_t() {clear();}
4800 size_t get_index() const {return type;}
4801 RICrequestID& select_id_RICrequestID() { return set<RICrequestID>(1); }
4802 RICrequestID const* get_id_RICrequestID() const { return get<RICrequestID>(1); }
4803 RANfunctionID& select_id_RANfunctionID() { return set<RANfunctionID>(2); }
4804 RANfunctionID const* get_id_RANfunctionID() const { return get<RANfunctionID>(2); }
4805 RICaction_NotAdmitted_List& select_id_RICactions_NotAdmitted() { return set<RICaction_NotAdmitted_List>(3); }
4806 RICaction_NotAdmitted_List const* get_id_RICactions_NotAdmitted() const { return get<RICaction_NotAdmitted_List>(3); }
4807 CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(4); }
4808 CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(4); }
4809 bool is_unknown() const { return type == 5; }
4814 case 1: var.destroy<RICrequestID>(); break;
4815 case 2: var.destroy<RANfunctionID>(); break;
4816 case 3: var.destroy<RICaction_NotAdmitted_List>(); break;
4817 case 4: var.destroy<CriticalityDiagnostics>(); break;
4819 type = 0; ref_nested().clear();
4821 template<typename V> static inline void enumerate(V& v)
4823 v.template operator()<RICrequestID>(1);
4824 v.template operator()<RANfunctionID>(2);
4825 v.template operator()<RICaction_NotAdmitted_List>(3);
4826 v.template operator()<CriticalityDiagnostics>(4);
4830 template<typename V> bool decode(size_t index, V& v)
4835 case 1: v(select_id_RICrequestID()); return true;
4836 case 2: v(select_id_RANfunctionID()); return true;
4837 case 3: v(select_id_RICactions_NotAdmitted()); return true;
4838 case 4: v(select_id_CriticalityDiagnostics()); return true;
4839 case 5: if(type != 5) {clear(); asn::base::set();} type = 5; return true;
4844 template<typename V> bool encode(size_t index, V& v) const
4846 if(index != type) return false;
4849 case 1: v(var.as<RICrequestID>()); return true;
4850 case 2: v(var.as<RANfunctionID>()); return true;
4851 case 3: v(var.as<RICaction_NotAdmitted_List>()); return true;
4852 case 4: v(var.as<CriticalityDiagnostics>()); return true;
4858 template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
4859 template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
4862 char dummy1[sizeof(CriticalityDiagnostics)];
4863 char dummy2[sizeof(RANfunctionID)];
4864 char dummy3[sizeof(RICaction_NotAdmitted_List)];
4865 char dummy4[sizeof(RICrequestID)];
4868 asn::variant<sizeof(union_type)> var;
4872 struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
4874 size_t get_index() const {return type;}
4875 bool is_unknown() const { return type == 5; }
4876 void clear() {type = 0;}
4877 void select_id_RICrequestID() { set(mandatory); type=1;}
4878 void select_id_RANfunctionID() { set(mandatory); type=2;}
4879 void select_id_RICactions_NotAdmitted() { set(mandatory); type=3;}
4880 void select_id_CriticalityDiagnostics() { set(optional); type=4;}
4881 X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
4882 template<typename V> bool decode(V& v)
4885 if(!v(ref_nested())) return false;
4886 if(equal(mandatory)) { type = 1; return true; }
4887 else if(equal(mandatory)) { type = 2; return true; }
4888 else if(equal(mandatory)) { type = 3; return true; }
4889 else if(equal(optional)) { type = 4; return true; }
4890 else { type = 5; return true;}
4894 template<typename V> bool encode(V& v) const
4896 return v(ref_nested());
4900 template<typename V> bool decode(size_t index, V& v)
4905 case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
4906 case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
4907 case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
4908 case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
4909 case 5: type = 5; return v(ref_nested());
4910 ref_nested().clear();
4915 template<typename V> bool encode(size_t index, V& v) const
4917 if(index != type) {return false;} return v(ref_nested());
4927 RICsubscriptionFailure ::= SEQUENCE {
4928 protocolIEs ProtocolIE-Container {{RICsubscriptionFailure-IEs}},
4933 struct RICsubscriptionFailure : asn::sequence<1, 0, true, 0>
4935 static constexpr const char* name() {return "RICsubscriptionFailure";}
4936 using parent_t = asn::sequence<1, 0, true, 0>;
4937 struct protocolIEs_t : ProtocolIE_Container<RICsubscriptionFailure_IEs>
4939 static constexpr const char* name() {return "protocolIEs_t";}
4940 using parent_t = ProtocolIE_Container<RICsubscriptionFailure_IEs>;
4943 protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
4944 protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
4945 template<typename V> void decode(V& v)
4950 template<typename V> void encode(V& v) const
4957 protocolIEs.clear();
4961 protocolIEs_t protocolIEs;
4965 RICsubscriptionRequest-IEs X2AP-PROTOCOL-IES ::= {
4966 { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory}|
4967 { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory}|
4968 { ID id-RICsubscription CRITICALITY reject TYPE RICsubscription PRESENCE mandatory},
4973 struct RICsubscriptionRequest_IEs
4975 struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
4977 size_t get_index() const {return type;}
4978 bool is_unknown() const { return type == 4; }
4979 void clear() {type = 0;}
4980 void select_id_RICrequestID() { set(id_RICrequestID); type=1;}
4981 void select_id_RANfunctionID() { set(id_RANfunctionID); type=2;}
4982 void select_id_RICsubscription() { set(id_RICsubscription); type=3;}
4983 X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
4984 template<typename V> bool decode(V& v)
4987 if(!v(ref_nested())) return false;
4988 if(equal(id_RICrequestID)) { type = 1; return true; }
4989 else if(equal(id_RANfunctionID)) { type = 2; return true; }
4990 else if(equal(id_RICsubscription)) { type = 3; return true; }
4991 else { type = 4; return true;}
4995 template<typename V> bool encode(V& v) const
4997 return v(ref_nested());
5001 template<typename V> bool decode(size_t index, V& v)
5006 case 1: type = 1; if(v(ref_nested())) { return equal(id_RICrequestID);} return false;
5007 case 2: type = 2; if(v(ref_nested())) { return equal(id_RANfunctionID);} return false;
5008 case 3: type = 3; if(v(ref_nested())) { return equal(id_RICsubscription);} return false;
5009 case 4: type = 4; return v(ref_nested());
5010 ref_nested().clear();
5015 template<typename V> bool encode(size_t index, V& v) const
5017 if(index != type) {return false;} return v(ref_nested());
5024 struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
5026 size_t get_index() const {return type;}
5027 bool is_unknown() const { return type == 4; }
5028 void clear() {type = 0;}
5029 void select_id_RICrequestID() { set(reject); type=1;}
5030 void select_id_RANfunctionID() { set(reject); type=2;}
5031 void select_id_RICsubscription() { set(reject); type=3;}
5032 X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
5033 template<typename V> bool decode(V& v)
5036 if(!v(ref_nested())) return false;
5037 if(equal(reject)) { type = 1; return true; }
5038 else if(equal(reject)) { type = 2; return true; }
5039 else if(equal(reject)) { type = 3; return true; }
5040 else { type = 4; return true;}
5044 template<typename V> bool encode(V& v) const
5046 return v(ref_nested());
5050 template<typename V> bool decode(size_t index, V& v)
5055 case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
5056 case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
5057 case 3: type = 3; if(v(ref_nested())) { return equal(reject);} return false;
5058 case 4: type = 4; return v(ref_nested());
5059 ref_nested().clear();
5064 template<typename V> bool encode(size_t index, V& v) const
5066 if(index != type) {return false;} return v(ref_nested());
5073 struct Value_t : asn::typefield<true>
5075 ~Value_t() {clear();}
5076 size_t get_index() const {return type;}
5077 RICrequestID& select_id_RICrequestID() { return set<RICrequestID>(1); }
5078 RICrequestID const* get_id_RICrequestID() const { return get<RICrequestID>(1); }
5079 RANfunctionID& select_id_RANfunctionID() { return set<RANfunctionID>(2); }
5080 RANfunctionID const* get_id_RANfunctionID() const { return get<RANfunctionID>(2); }
5081 RICsubscription& select_id_RICsubscription() { return set<RICsubscription>(3); }
5082 RICsubscription const* get_id_RICsubscription() const { return get<RICsubscription>(3); }
5083 bool is_unknown() const { return type == 4; }
5088 case 1: var.destroy<RICrequestID>(); break;
5089 case 2: var.destroy<RANfunctionID>(); break;
5090 case 3: var.destroy<RICsubscription>(); break;
5092 type = 0; ref_nested().clear();
5094 template<typename V> static inline void enumerate(V& v)
5096 v.template operator()<RICrequestID>(1);
5097 v.template operator()<RANfunctionID>(2);
5098 v.template operator()<RICsubscription>(3);
5102 template<typename V> bool decode(size_t index, V& v)
5107 case 1: v(select_id_RICrequestID()); return true;
5108 case 2: v(select_id_RANfunctionID()); return true;
5109 case 3: v(select_id_RICsubscription()); return true;
5110 case 4: if(type != 4) {clear(); asn::base::set();} type = 4; return true;
5115 template<typename V> bool encode(size_t index, V& v) const
5117 if(index != type) return false;
5120 case 1: v(var.as<RICrequestID>()); return true;
5121 case 2: v(var.as<RANfunctionID>()); return true;
5122 case 3: v(var.as<RICsubscription>()); return true;
5128 template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
5129 template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
5132 char dummy1[sizeof(RANfunctionID)];
5133 char dummy2[sizeof(RICrequestID)];
5134 char dummy3[sizeof(RICsubscription)];
5137 asn::variant<sizeof(union_type)> var;
5141 struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
5143 size_t get_index() const {return type;}
5144 bool is_unknown() const { return type == 4; }
5145 void clear() {type = 0;}
5146 void select_id_RICrequestID() { set(mandatory); type=1;}
5147 void select_id_RANfunctionID() { set(mandatory); type=2;}
5148 void select_id_RICsubscription() { set(mandatory); type=3;}
5149 X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
5150 template<typename V> bool decode(V& v)
5153 if(!v(ref_nested())) return false;
5154 if(equal(mandatory)) { type = 1; return true; }
5155 else if(equal(mandatory)) { type = 2; return true; }
5156 else if(equal(mandatory)) { type = 3; return true; }
5157 else { type = 4; return true;}
5161 template<typename V> bool encode(V& v) const
5163 return v(ref_nested());
5167 template<typename V> bool decode(size_t index, V& v)
5172 case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
5173 case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
5174 case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
5175 case 4: type = 4; return v(ref_nested());
5176 ref_nested().clear();
5181 template<typename V> bool encode(size_t index, V& v) const
5183 if(index != type) {return false;} return v(ref_nested());
5193 RICsubscriptionRequest ::= SEQUENCE {
5194 protocolIEs ProtocolIE-Container {{RICsubscriptionRequest-IEs}},
5199 struct RICsubscriptionRequest : asn::sequence<1, 0, true, 0>
5201 static constexpr const char* name() {return "RICsubscriptionRequest";}
5202 using parent_t = asn::sequence<1, 0, true, 0>;
5203 struct protocolIEs_t : ProtocolIE_Container<RICsubscriptionRequest_IEs>
5205 static constexpr const char* name() {return "protocolIEs_t";}
5206 using parent_t = ProtocolIE_Container<RICsubscriptionRequest_IEs>;
5209 protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
5210 protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
5211 template<typename V> void decode(V& v)
5216 template<typename V> void encode(V& v) const
5223 protocolIEs.clear();
5227 protocolIEs_t protocolIEs;
5231 RICsubscriptionResponse-IEs X2AP-PROTOCOL-IES ::= {
5232 { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory } |
5233 { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory } |
5234 { ID id-RICactions-Admitted CRITICALITY reject TYPE RICaction-Admitted-List PRESENCE mandatory } |
5235 { ID id-RICactions-NotAdmitted CRITICALITY reject TYPE RICaction-NotAdmitted-List PRESENCE optional },
5240 struct RICsubscriptionResponse_IEs
5242 struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
5244 size_t get_index() const {return type;}
5245 bool is_unknown() const { return type == 5; }
5246 void clear() {type = 0;}
5247 void select_id_RICrequestID() { set(id_RICrequestID); type=1;}
5248 void select_id_RANfunctionID() { set(id_RANfunctionID); type=2;}
5249 void select_id_RICactions_Admitted() { set(id_RICactions_Admitted); type=3;}
5250 void select_id_RICactions_NotAdmitted() { set(id_RICactions_NotAdmitted); type=4;}
5251 X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
5252 template<typename V> bool decode(V& v)
5255 if(!v(ref_nested())) return false;
5256 if(equal(id_RICrequestID)) { type = 1; return true; }
5257 else if(equal(id_RANfunctionID)) { type = 2; return true; }
5258 else if(equal(id_RICactions_Admitted)) { type = 3; return true; }
5259 else if(equal(id_RICactions_NotAdmitted)) { type = 4; return true; }
5260 else { type = 5; return true;}
5264 template<typename V> bool encode(V& v) const
5266 return v(ref_nested());
5270 template<typename V> bool decode(size_t index, V& v)
5275 case 1: type = 1; if(v(ref_nested())) { return equal(id_RICrequestID);} return false;
5276 case 2: type = 2; if(v(ref_nested())) { return equal(id_RANfunctionID);} return false;
5277 case 3: type = 3; if(v(ref_nested())) { return equal(id_RICactions_Admitted);} return false;
5278 case 4: type = 4; if(v(ref_nested())) { return equal(id_RICactions_NotAdmitted);} return false;
5279 case 5: type = 5; return v(ref_nested());
5280 ref_nested().clear();
5285 template<typename V> bool encode(size_t index, V& v) const
5287 if(index != type) {return false;} return v(ref_nested());
5294 struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
5296 size_t get_index() const {return type;}
5297 bool is_unknown() const { return type == 5; }
5298 void clear() {type = 0;}
5299 void select_id_RICrequestID() { set(reject); type=1;}
5300 void select_id_RANfunctionID() { set(reject); type=2;}
5301 void select_id_RICactions_Admitted() { set(reject); type=3;}
5302 void select_id_RICactions_NotAdmitted() { set(reject); type=4;}
5303 X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
5304 template<typename V> bool decode(V& v)
5307 if(!v(ref_nested())) return false;
5308 if(equal(reject)) { type = 1; return true; }
5309 else if(equal(reject)) { type = 2; return true; }
5310 else if(equal(reject)) { type = 3; return true; }
5311 else if(equal(reject)) { type = 4; return true; }
5312 else { type = 5; return true;}
5316 template<typename V> bool encode(V& v) const
5318 return v(ref_nested());
5322 template<typename V> bool decode(size_t index, V& v)
5327 case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
5328 case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
5329 case 3: type = 3; if(v(ref_nested())) { return equal(reject);} return false;
5330 case 4: type = 4; if(v(ref_nested())) { return equal(reject);} return false;
5331 case 5: type = 5; return v(ref_nested());
5332 ref_nested().clear();
5337 template<typename V> bool encode(size_t index, V& v) const
5339 if(index != type) {return false;} return v(ref_nested());
5346 struct Value_t : asn::typefield<true>
5348 ~Value_t() {clear();}
5349 size_t get_index() const {return type;}
5350 RICrequestID& select_id_RICrequestID() { return set<RICrequestID>(1); }
5351 RICrequestID const* get_id_RICrequestID() const { return get<RICrequestID>(1); }
5352 RANfunctionID& select_id_RANfunctionID() { return set<RANfunctionID>(2); }
5353 RANfunctionID const* get_id_RANfunctionID() const { return get<RANfunctionID>(2); }
5354 RICaction_Admitted_List& select_id_RICactions_Admitted() { return set<RICaction_Admitted_List>(3); }
5355 RICaction_Admitted_List const* get_id_RICactions_Admitted() const { return get<RICaction_Admitted_List>(3); }
5356 RICaction_NotAdmitted_List& select_id_RICactions_NotAdmitted() { return set<RICaction_NotAdmitted_List>(4); }
5357 RICaction_NotAdmitted_List const* get_id_RICactions_NotAdmitted() const { return get<RICaction_NotAdmitted_List>(4); }
5358 bool is_unknown() const { return type == 5; }
5363 case 1: var.destroy<RICrequestID>(); break;
5364 case 2: var.destroy<RANfunctionID>(); break;
5365 case 3: var.destroy<RICaction_Admitted_List>(); break;
5366 case 4: var.destroy<RICaction_NotAdmitted_List>(); break;
5368 type = 0; ref_nested().clear();
5370 template<typename V> static inline void enumerate(V& v)
5372 v.template operator()<RICrequestID>(1);
5373 v.template operator()<RANfunctionID>(2);
5374 v.template operator()<RICaction_Admitted_List>(3);
5375 v.template operator()<RICaction_NotAdmitted_List>(4);
5379 template<typename V> bool decode(size_t index, V& v)
5384 case 1: v(select_id_RICrequestID()); return true;
5385 case 2: v(select_id_RANfunctionID()); return true;
5386 case 3: v(select_id_RICactions_Admitted()); return true;
5387 case 4: v(select_id_RICactions_NotAdmitted()); return true;
5388 case 5: if(type != 5) {clear(); asn::base::set();} type = 5; return true;
5393 template<typename V> bool encode(size_t index, V& v) const
5395 if(index != type) return false;
5398 case 1: v(var.as<RICrequestID>()); return true;
5399 case 2: v(var.as<RANfunctionID>()); return true;
5400 case 3: v(var.as<RICaction_Admitted_List>()); return true;
5401 case 4: v(var.as<RICaction_NotAdmitted_List>()); return true;
5407 template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
5408 template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
5411 char dummy1[sizeof(RANfunctionID)];
5412 char dummy2[sizeof(RICaction_Admitted_List)];
5413 char dummy3[sizeof(RICaction_NotAdmitted_List)];
5414 char dummy4[sizeof(RICrequestID)];
5417 asn::variant<sizeof(union_type)> var;
5421 struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
5423 size_t get_index() const {return type;}
5424 bool is_unknown() const { return type == 5; }
5425 void clear() {type = 0;}
5426 void select_id_RICrequestID() { set(mandatory); type=1;}
5427 void select_id_RANfunctionID() { set(mandatory); type=2;}
5428 void select_id_RICactions_Admitted() { set(mandatory); type=3;}
5429 void select_id_RICactions_NotAdmitted() { set(optional); type=4;}
5430 X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
5431 template<typename V> bool decode(V& v)
5434 if(!v(ref_nested())) return false;
5435 if(equal(mandatory)) { type = 1; return true; }
5436 else if(equal(mandatory)) { type = 2; return true; }
5437 else if(equal(mandatory)) { type = 3; return true; }
5438 else if(equal(optional)) { type = 4; return true; }
5439 else { type = 5; return true;}
5443 template<typename V> bool encode(V& v) const
5445 return v(ref_nested());
5449 template<typename V> bool decode(size_t index, V& v)
5454 case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
5455 case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
5456 case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
5457 case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
5458 case 5: type = 5; return v(ref_nested());
5459 ref_nested().clear();
5464 template<typename V> bool encode(size_t index, V& v) const
5466 if(index != type) {return false;} return v(ref_nested());
5476 RICsubscriptionResponse ::= SEQUENCE {
5477 protocolIEs ProtocolIE-Container{{RICsubscriptionResponse-IEs}},
5482 struct RICsubscriptionResponse : asn::sequence<1, 0, true, 0>
5484 static constexpr const char* name() {return "RICsubscriptionResponse";}
5485 using parent_t = asn::sequence<1, 0, true, 0>;
5486 struct protocolIEs_t : ProtocolIE_Container<RICsubscriptionResponse_IEs>
5488 static constexpr const char* name() {return "protocolIEs_t";}
5489 using parent_t = ProtocolIE_Container<RICsubscriptionResponse_IEs>;
5492 protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
5493 protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
5494 template<typename V> void decode(V& v)
5499 template<typename V> void encode(V& v) const
5506 protocolIEs.clear();
5510 protocolIEs_t protocolIEs;